首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >容器之间的连接被拒绝

容器之间的连接被拒绝
EN

Stack Overflow用户
提问于 2019-04-14 17:27:21
回答 3查看 10.9K关注 0票数 3

我尝试将运行spring Boot2应用程序的容器链接到运行mongo的容器,但连接被拒绝

docker-compose文件为mongo添加了一个容器(稍后还会在这里为spring boot添加另一个容器)

代码语言:javascript
复制
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

代码语言:javascript
复制
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文件中

代码语言:javascript
复制
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文件中直接构建它

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2019-04-15 02:07:09

如果您希望两个容器相互通信,则需要将它们放在相同的docker网络中

按如下方式更新您的docker-compose.yml文件:

代码语言:javascript
复制
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
票数 3
EN

Stack Overflow用户

发布于 2020-10-11 19:02:39

如果你在容器内使用对localhost的引用,那么在运行docker时使用--network="host"

票数 0
EN

Stack Overflow用户

发布于 2021-02-10 19:15:15

除了@shushu304的答案之外,这对我来说也适用于有问题的容器

代码语言:javascript
复制
networks:
  - local
  - default
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55673786

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档