Windows10、Docker Desktopで動作確認をしました。
まずは任意のSQLファイルを作成します。
ここではa.sqlとして保存しました。
a.sql
create database shop;
create table items (item_id integer, item_name varchar(100), price integer);
insert into items values (1000, 'desk', 54000), (1001, 'clock', 22800);
作成したらそのSQLファイルがあるフォルダ内で、以下を実行します。
docker run --name some-postgres -e POSTGRES_PASSWORD=mysecretpassword -v ${pwd}:/tmp -dit postgres
docker exec some-postgres psql -U postgres -f /tmp/a.sql
ちゃんとa.sqlが実行されたか確認します。
> docker exec -it some-postgres psql -U postgres
psql (14.3 (Debian 14.3-1.pgdg110+1))
Type "help" for help.
postgres=# select * from items;
item_id | item_name | price
---------+-----------+-------
1000 | desk | 54000
1001 | clock | 22800
(2 rows)
ちゃんと実行されていました。
ちなみに、psqlコマンド実行後にパスワード聞かれないなと思ったら、同じことを思っている方がいらっしゃいました。
同じコンテナ内からの接続の時はパスワードを聞かれないようです。