试图使postgres的Dockerfile需要我的应用程序。
Dockerfile
FROM postgres:9.4
RUN mkdir /sql
COPY src/main/resources/sql_scripts/* /sql/
RUN psql -f /sql/create_user.sql
RUN psql -U user -W 123 -f create_db.sql
RUN psql -U user -W 123 -d school_ats -f create_tables.sql跑
docker build .结果:
Sending build context to Docker daemon 3.367 MB
Step 1 : FROM postgres:9.4
---> 6196bca94565
Step 2 : RUN mkdir /sql
---> Using cache
---> 6f57c1e759b7
Step 3 : COPY src/main/resources/sql_scripts/* /sql/
---> Using cache
---> 3b496bfb28cd
Step 4 : RUN psql -a -f /sql/create_user.sql
---> Running in 33b2230a12fa
psql: could not connect to server: No such file or directory
Is the server running locally and accepting
connections on Unix domain socket "/var/run/postgresql/.s.PGSQL.5432"?
The command '/bin/sh -c psql -a -f /sql/create_user.sql' returned a non-zero code: 2如何为我的项目指定db in docker?
发布于 2016-05-02 08:05:37
当构建您的停靠映像时,postgres没有运行。在容器启动时启动数据库,之后可以执行任何sql文件。最简单的解决方案是将sql文件放到特殊目录中:
FROM postgres:9.4
COPY *.sql /docker-entrypoint-initdb.d/启动时,脚本将执行这个dir中的所有文件。您可以在docs /postgres/部分中了解到如何扩展此映像。
另外,如果您需要不同的用户,您应该设置环境变量POSTGRES_USER和POSTGRES_PASSWORD。那么使用自定义脚本创建用户就更容易了。
发布于 2016-05-02 08:06:56
正如上面的注释所述,在图像构建过程中,您不会得到Postgres的运行实例。
你可以采取稍微不同的方法。您可以将它们复制到/docker-entrypoint-initdb.d/目录中,而不是自己执行SQL脚本。它们将在容器启动时执行。
看看postgres:9.4图像是如何构建的:
还可以在Dockerfile中使用变量设置数据库详细信息:
https://stackoverflow.com/questions/36975330
复制相似问题