gpt4 book ai didi

docker - 如何通过 docker run 运行插入的 sql 文件?

转载 作者:IT老高 更新时间:2023-10-28 12:43:42 25 4
gpt4 key购买 nike

给定一个带有 SQL 插入的文件:

INSERT INTO countries (id, country_code, name)
VALUES
(1, 'AF', 'Afghanistan'),
(2, 'AL', 'Albania');

我想在运行 postgres 的容器上使用 docker run 命令运行该文件。

我试过了:

docker run -e domain="192.168.99.100" pg /bin/bash -c "psql -d whiteboard_api -a -f inserts_into_countries_table.sql"
psql: could not connect to server: Connection refused
Is the server running locally and accepting
connections on Unix domain socket "/var/run/postgresql/.s.PGSQL.5432"?

你可以看到我的图片是pg:

capistrano:whiteboard_v2 jzollars$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
6b500bec9210 bbb "/usr/bin/supervisord" 4 weeks ago Up 4 weeks 0.0.0.0:80->80/tcp distracted_raman
c1e88f2695f5 wh "/usr/bin/supervisord" 4 weeks ago Up 4 weeks 0.0.0.0:3000->3000/tcp high_einstein
7e383e99bdc3 pg "/usr/lib/postgresql/" 4 weeks ago Up 4 weeks 0.0.0.0:5432->5432/tcp pg_test

如何使用 docker run 加载此文件并在 docker 容器中运行它?

最佳答案

要对正在运行的容器执行命令,请使用 docker exec .

要将文件(例如:dump.sql)复制到容器中,请使用 docker cp

所以你的方法可能看起来像这样:

docker cp ./dump.sql pg_test:/docker-entrypoint-initdb.d/dump.sql
docker exec -u postgres pg_test psql postgres postgres -f docker-entrypoint-initdb.d/dump.sql

这里是通用形式:

docker cp ./localfile.sql containername:/container/path/file.sql
docker exec -u postgresuser containername psql dbname postgresuser -f /container/path/file.sql

请注意,如果您需要在每次运行数据库时为其播种,则文件夹 /docker-entrypoint-initdb.d/ 会执行 have special significance , 如果您使用 offical postgres image

关于docker - 如何通过 docker run 运行插入的 sql 文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34688465/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com