#!/bin/bash set -euo pipefail # Usage: # ./psql_sh # interactive psql inside container # ./psql_sh -c "SELECT 1;" # run a command # cat file.csv | ./psql_sh -c "\\copy ... FROM STDIN WITH (FORMAT csv, HEADER true)" script_dir="$(cd -- "$(dirname -- "${BASH_SOURCE[0]}")" && pwd)" compose_file="${script_dir}/docker-compose.yml" compose() { docker compose -f "${compose_file}" --project-directory "${script_dir}" "$@" } if [ -t 0 ]; then compose exec -it db psql -U "${POSTGRES_USER:-postgres}" -d demo "$@" else compose exec -T db psql -U "${POSTGRES_USER:-postgres}" -d demo "$@" fi