我尝试将运行spring Boot2应用程序的容器链接到运行mongo的容器,但连接被拒绝
docker-compose文件为mongo添加了一个容器(稍后还会在这里为spring boot添加另一个容器)
version: '3.1'
services:
mongo:
image: mongo
container_name: springboot-mongo
ports:
- 27017:27017
volumes:
- $HOME/data/springboot-mongo-data:/data/db
- $HOME/data/springboot-mongo-bkp:/data/bkp
restart: always
用于spring boot的dockerfile
FROM openjdk:11
RUN apt-get update && apt-get install bash
RUN mkdir -p /opt/app
ENV PROJECT_HOME /opt/app
COPY build/libs/recipe-book.jar $PROJECT_HOME/recipe-book.jar
WORKDIR $PROJECT_HOME
CMD ["java", "-Dspring.data.mongodb.uri=mongodb://springboot-mongo:27017/recipes", "-jar","./recipe-book.jar"]
我尝试了发送命令行mongo uri的不同方法:使用localhost而不是springboot-mongo,我还尝试了这里描述的https://www.baeldung.com/spring-boot-command-line-arguments,更具体地说是-Dspring-boot.run.arguments=--spring.data.mongodb.uri=mongodb://springboot-mongo:27017/recipes
。似乎每次命中一个连接都会被拒绝。
怎样才能让spring容器连接到mongo?
谢谢
更新后,我还尝试将第二个容器添加到docker-compose文件中
version: '3.1'
services:
springboot:
build: .
restart: always
container_name: springboot
ports:
- 8182:8080
working_dir: /opt/app
depends_on:
- mongo
mongo:
image: mongo
container_name: springboot-mongo
ports:
- 27017:27017
volumes:
- $HOME/data/springboot-mongo-data:/data/db
- $HOME/data/springboot-mongo-bkp:/data/bkp
restart: always
更新2:
我设法部分地解决了这个问题,首先在我的计算机上本地构建镜像,然后在docker-compose文件中使用创建的镜像,并将-Dspring.data.mongodb.uri=mongodb://springboot-mongo:27017/recipes
作为参数,但仍然无法在docker-compose文件中直接构建它
发布于 2019-04-15 02:07:09
如果您希望两个容器相互通信,则需要将它们放在相同的docker网络中
按如下方式更新您的docker-compose.yml文件:
version: '3.1'
services:
springboot:
build: .
restart: always
container_name: springboot
ports:
- 8182:8080
working_dir: /opt/app
depends_on:
- mongo
networks:
- local
mongo:
image: mongo
container_name: springboot-mongo
ports:
- 27017:27017
volumes:
- $HOME/data/springboot-mongo-data:/data/db
- $HOME/data/springboot-mongo-bkp:/data/bkp
restart: always
networks:
- local
networks:
local:
driver: bridge
发布于 2020-10-11 19:02:39
如果你在容器内使用对localhost
的引用,那么在运行docker时使用--network="host"
。
发布于 2021-02-10 19:15:15
除了@shushu304的答案之外,这对我来说也适用于有问题的容器
networks:
- local
- default
https://stackoverflow.com/questions/55673786
复制相似问题