【发布时间】:2016-04-28 06:01:39
【问题描述】:
我正在尝试通过 Dockerfile 从使用网络链接进行迁移,但我遇到了一些问题。我将首先勾勒出我的原始设置:
原创 - 链接
Dockerfile:
FROM java:8
VOLUME /tmp
ADD docker_micro_maven-0.0.1-SNAPSHOT.jar app.jar
RUN bash -c 'touch /app.jar'
EXPOSE 8080
ENTRYPOINT ["java","-Dspring.data.mongodb.uri=mongodb://mongodb/micros", "-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"]
docker-compose.yml:
mongodb:
image: mongo
employee:
image: jdruwe/docker_micro_maven
links:
- mongodb
ports:
- "8080"
新功能 - 网络
Dockerfile:
FROM java:8
VOLUME /tmp
ADD docker_micro_maven-0.0.1-SNAPSHOT.jar app.jar
RUN bash -c 'touch /app.jar'
EXPOSE 8080
ENTRYPOINT ["java","-Dspring.data.mongodb.uri=mongodb://${MONGO_URI_DOCKER}/micros", "-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"]
docker-compose.yml:
mongodb:
container_name: "db"
image: mongo
employee:
image: jdruwe/docker_micro_maven
environment:
- MONGO_URI_DOCKER=db:27017
ports:
- "8080"
当我在 spring boot 应用程序中调用我的 rest 端点时(原始情况),我总是得到响应(一些 json 数据)。当我现在调用它时,我得到以下错误响应:
{
"timestamp": 1453405937191,
"status": 500,
"error": "Internal Server Error",
"exception": "org.springframework.dao.DataAccessResourceFailureException",
"message": "Timed out after 10000 ms while waiting to connect. Client view of cluster state is {type=Unknown, servers=[{address=db:27017, type=Unknown, state=Connecting, exception={com.mongodb.MongoException$Network: Exception opening the socket}, caused by {java.net.UnknownHostException: db: unknown error}}]; nested exception is com.mongodb.MongoTimeoutException: Timed out after 10000 ms while waiting to connect. Client view of cluster state is {type=Unknown, servers=[{address=db:27017, type=Unknown, state=Connecting, exception={com.mongodb.MongoException$Network: Exception opening the socket}, caused by {java.net.UnknownHostException: db: unknown error}}]",
"path": "/employee"
}
我用作参考的来自 Devoxx 的视频:https://youtu.be/aSATsLG59Zs?t=53m33s
似乎我一直在做错事,但我不确定它是什么,欢迎任何帮助。提前致谢!
【问题讨论】:
-
您是否开始使用
--x-networking选项进行撰写?此外,如果没有链接,则无法保证容器启动的顺序,因此可能会在 mongodb 容器启动并准备好接受连接之前发出请求。注意,在 Docker Compose 1.6 中,新的网络不再是实验性的,但需要使用 2.0 格式或 docker-compose 文件,见github.com/docker/compose/releases/tag/1.6.0-rc1 -
--x-networking 成功了,我真的需要开始使用 --help 命令。我正在使用“Docker 版本 1.9.1,构建 a34a1d5”和 docker-compose 版本 1.5.2,构建 e5cf49d。我可以升级我的 docker-compose 并将我的 docker 保持在那个版本吗?
-
我认为可以,但是 docker 1.10 中有更多增强功能可供 docker compose 使用,因此理想情况下,您应该在发布时同时升级它们
-
好的,非常感谢!
标签: spring mongodb docker spring-boot docker-compose