Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Spring Docker compose从链接迁移到网络MongoDB数据库问题_Spring_Mongodb_Docker_Spring Boot_Docker Compose - Fatal编程技术网

Spring Docker compose从链接迁移到网络MongoDB数据库问题

Spring Docker compose从链接迁移到网络MongoDB数据库问题,spring,mongodb,docker,spring-boot,docker-compose,Spring,Mongodb,Docker,Spring Boot,Docker Compose,我正在尝试通过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/mi

我正在尝试通过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"]
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:
 image: mongo
employee:
 image: jdruwe/docker_micro_maven
 links:
  - mongodb
 ports:
  - "8080"
mongodb:
 container_name: "db"
 image: mongo
employee:
 image: jdruwe/docker_micro_maven
 environment:
  - MONGO_URI_DOCKER=db:27017
 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://mongodb/micros", "-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"]
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:
 image: mongo
employee:
 image: jdruwe/docker_micro_maven
 links:
  - mongodb
 ports:
  - "8080"
mongodb:
 container_name: "db"
 image: mongo
employee:
 image: jdruwe/docker_micro_maven
 environment:
  - MONGO_URI_DOCKER=db:27017
 ports:
  - "8080"
当我在SpringBoot应用程序中调用我的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"
}
Devxx I的视频用作参考:


似乎我一直在做错事,但我不确定是什么,欢迎任何帮助。提前谢谢

在docker compose 1.5.x中,新的联网功能仍然是一项实验性功能,需要使用
--x-networking
选项启用

新的网络功能将从docker compose 1.6中的实验性功能中移出,如果docker-compose.yml使用新的(2.0)文件格式,则会自动使用这些功能

更多信息,请阅读docker compose 1.6-rc1的发行说明;

您是否已开始使用
--x-networking
选项进行撰写?此外,如果没有链接,则无法保证容器的启动顺序,因此有可能在mongodb容器启动并准备接受连接之前发出请求。请注意,在Docker Compose 1.6中,新的网络不再是实验性的,但是您需要使用2.0格式或Docker Compose文件,请参见--x-networking完成了这个技巧,我确实需要开始使用--help命令。我正在使用“Docker版本1.9.1,构建a34a1d5”和Docker compose版本1.5.2,构建e5cf49d。我可以升级我的docker compose并保持我的docker在该版本吗?我想你可以,但docker compose可以利用docker 1.10中的更多增强功能,因此理想情况下,你应该在发布Dok时升级它们,非常感谢!