【发布时间】:2016-03-07 11:16:46
【问题描述】:
我正在 docker 中构建一个 java spring mvc 应用程序,而 dokefile 构建涉及与 postgres 容器交互。每当我运行docker-compose up 时,dockerfile 中与 postrges 交互的步骤有时会失败并出现异常
psql:无法将主机名“somePostgres”转换为地址:名称或服务未知 失败
FAILURE:构建失败并出现异常。
DockerCompose 文件:
abcdweb:
links:
- abcdpostgres
build: .
ports:
- "8080:8080"
volumes:
- .:/abcd-myproj
container_name: someWeb
abcdpostgres:
image: postgres
environment:
- POSTGRES_PASSWORD=postgres
- POSTGRES_USER=postgres
container_name: somePostgres
somePostgres 似乎启动很快,并且没有 postgres 容器延迟加载问题。目前我正在由 docker-machine 创建的虚拟框中运行它。无法得到错误,因为它不是持久的。
PS:添加了 Dockerfile
FROM java:7
RUN apt-get update && apt-get install -y postgresql-client-9.4
ADD . ./abcd-myproj
WORKDIR /abcd-myproj
RUN ./gradlew build -x test
RUN sh db/importdata.sh
CMD ./gradlew jettyRun
【问题讨论】:
-
所以容器名称是
somePostgres,你链接到abcdpostgres。 -
您无法链接到 dockerfile 中的其他正在运行的容器。如果你在 Dockerfile 中解释你想要做什么,我可以给你一些关于如何完成你想要的想法。
-
@BMW 是的,我想链接到 somePostgres
-
@PaulBecotte 作为一个问题,dockerfile 有时会构建并正常工作,尽管这种行为不是持久的。我添加了 dockerfile,你可以看到 ./gradlew build -x test 需要容器启动并运行,因为构建任务涉及创建和初始化数据库。我知道有多种方法可以解决这个问题,但我想知道这背后的原因行为不一致。
标签: docker docker-compose