docker compose 和docker file 部署会在不同的里面嘛?

最近打算自己在若依cloud的基础上改点东西 出来然后使用docker-compose部署的时候遇见啦如下问题:这是ruoyi-cloud 的docker-compose文件

version : '3.8'
services:
  ruoyi-nacos:
    container_name: ruoyi-nacos
    image: nacos/nacos-server
    build:
      context: ./nacos
    environment:
      - MODE=standalone
    volumes:
      - ./nacos/logs/:/home/nacos/logs
      - ./nacos/conf/application.properties:/home/nacos/conf/application.properties
    ports:
      - "8848:8848"
      - "9848:9848"
      - "9849:9849"
    depends_on:
      - ruoyi-mysql
  ruoyi-mysql:
    container_name: ruoyi-mysql
    image: mysql:5.7
    build:
      context: ./mysql
    ports:
      - "3306:3306"
    volumes:
      - ./mysql/conf:/etc/mysql/conf.d
      - ./mysql/logs:/logs
      - ./mysql/data:/var/lib/mysql
    command: [
          'mysqld',
          '--innodb-buffer-pool-size=80M',
          '--character-set-server=utf8mb4',
          '--collation-server=utf8mb4_unicode_ci',
          '--default-time-zone=+8:00',
          '--lower-case-table-names=1'
        ]
    environment:
      MYSQL_DATABASE: 'ry-cloud'
      MYSQL_ROOT_PASSWORD: password
  ruoyi-redis:
    container_name: ruoyi-redis
    image: redis:7.2
    build:
      context: ./redis
    ports:
      - "6379:6379"
    volumes:
      - ./redis/conf/redis.conf:/home/ruoyi/redis/redis.conf
      - ./redis/data:/data
    command: redis-server /home/ruoyi/redis/redis.conf
  ruoyi-nginx:
    container_name: ruoyi-nginx
    image: nginx
    build:
      context: ./nginx
    ports:
      - "80:80"
    volumes:
      - ./nginx/html/dist:/home/ruoyi/projects/ruoyi-ui
      - ./nginx/conf/nginx.conf:/etc/nginx/nginx.conf
      - ./nginx/logs:/var/log/nginx
      - ./nginx/conf.d:/etc/nginx/conf.d
    depends_on:
      - ruoyi-gateway
    links:
      - ruoyi-gateway
  ruoyi-gateway:
    container_name: ruoyi-gateway
    build:
      context: ./ruoyi/gateway
      dockerfile: dockerfile
    ports:
      - "8080:8080"
    depends_on:
      - ruoyi-redis
    links:
      - ruoyi-redis
  ruoyi-auth:
    container_name: ruoyi-auth
    build:
      context: ./ruoyi/auth
      dockerfile: dockerfile
    ports:
      - "9200:9200"
    depends_on:
      - ruoyi-redis
    links:
      - ruoyi-redis
  ruoyi-modules-system:
    container_name: ruoyi-modules-system
    build:
      context: ./ruoyi/modules/system
      dockerfile: dockerfile
    ports:
      - "9201:9201"
    depends_on:
      - ruoyi-redis
      - ruoyi-mysql
    links:
      - ruoyi-redis
      - ruoyi-mysql
  ruoyi-modules-gen:
    container_name: ruoyi-modules-gen
    build:
      context: ./ruoyi/modules/gen
      dockerfile: dockerfile
    ports:
      - "9202:9202"
    depends_on:
      - ruoyi-mysql
    links:
      - ruoyi-mysql
  ruoyi-modules-job:
    container_name: ruoyi-modules-job
    build:
      context: ./ruoyi/modules/job
      dockerfile: dockerfile
    ports:
      - "9203:9203"
    depends_on:
      - ruoyi-mysql
    links:
      - ruoyi-mysql
  ruoyi-modules-file:
    container_name: ruoyi-modules-file
    build:
      context: ./ruoyi/modules/file
      dockerfile: dockerfile
    ports:
      - "9300:9300"
    volumes:
    - ./ruoyi/uploadPath:/home/ruoyi/uploadPath
  ruoyi-visual-monitor:
    container_name: ruoyi-visual-monitor
    build:
      context: ./ruoyi/visual/monitor
      dockerfile: dockerfile
    ports:
      - "9100:9100"

部署的时候发现服务无法发现彼此,后来百度说的是需要


需要将ip改为容器名称,大致是因为容器之间不能通信的原因?
之前的配置写的是localhost:8848
能找到的原因是不是因为?下面有这个

"DNSNames": [
					"ruoyi-gateway",
					"b11c84eeca1a"
				]


然后现在我想在每个模块中新增一个dockerflie 用于修改代码之后部署用
image
这是自己在system服务中添加的dockerfile

# Dockerfile for ruoyi-modules-system service

# 使用 openjdk 8 作为基础镜像
FROM openjdk:8-jre

# 维护者信息
MAINTAINER ruoyi

# 指定工作目录
WORKDIR /home/ruoyi

# 复制编译好的 jar 文件到工作目录
COPY ./target/ruoyi-modules-system.jar /home/ruoyi/ruoyi-modules-system.jar

# 指定启动命令
CMD ["java", "-jar", "ruoyi-modules-system.jar"]

这是idea中的docker 启动配置


首先通过单独配dockerfile 部署就是发现不了nacos 就是无法服务发现嘛 不能注册进nacos。从dockerdesktop上来看似乎容器都不同


使用docker compose部署的服务都在一起但是使用单独的dockerfile部署的就被孤立出来所以导致无法发现彼此 请问这种怎么解决 这是为什么
是不是可以使用网卡去实现容器间通讯?

求助!!

太细节的东西不太好帮,但是感觉你方向偏了,没必要改镜像。
同一个docker compose文件起的多个容器,如果不特殊指定network,默认就是在同一个网络下的,不需要啥操作,直接就可以根据容器名称访问彼此。
这个network名称一般是docker compose文件所在的文件夹名,用docker network ls能看到。
不同docker compose起的容器,需要指定network来实现容器名访问。
建议先排查下为啥访问不了,而不是重建镜像,可以直接docker exec进容器去ping去curl测试下看看。

我大致了解大哥的意思啦 我试试看

From 快问快答 to 开发调优