首页 > 解决方案 > Docker-Compose : 来自具有相同 Dockerfile 的本地图像的多个服务

问题描述

我有两个服务,每个都在其 on 文件夹中:一个文件夹调用employees-service,另一个调用clients-service

另外,我在同一路径中有一个docker-compose.yaml文件和一个, 。Dockerfile

文件夹结构为:

在此处输入图像描述

docker-compose 是:

version: "3"
services:
  employees_srv:
    container_name: EmployeesContainer
    build: 
      context: ./employees-service
      dockerfile: ./Dockerfile
    ports:
      - "4444:4444"
      
  clients_srv:
    container_name: ClientsContainer
    build:
      context: ./clients-service
      dockerfile: ./Dockerfile
    ports:
      - "5555:5555"    

当我击中时,docker-compose up我得到:

ERROR: The Compose file './docker-compose.yaml' is invalid because:
Unsupported config option for services.employees-service: 'dockerfile'
Unsupported config option for services.clients_srv: 'dockerfile'

如何使用相同的 Dockerfile 运行服务?

标签: javascriptdockerdocker-composeyamldockerfile

解决方案


根据文档

  • context:构建发送到 Docker 守护进程的上下文。
  • dockerfile: 替代Dockerfile(如果构建必须使用与目录不同的文件Dockerfilecontext

我不明白这些目录 (employees-serviceclients-service) 在构建时是否需要Dockerfile. 如果是这种情况,我不知道构建将如何以相同的方式与一个目录或另一个目录一起工作。

如果您想让这些目录之一在运行时可用,您应该查看volumes

version: "3"
services:
  employees_srv:
    container_name: EmployeesContainer
    build: 
      context: .
    ports:
      - "4444:4444"
    volumes:
      - ./employees-service:/target/in_the_container
      
  clients_srv:
    container_name: ClientsContainer
    build:
      context: .
    ports:
      - "5555:5555"
    volumes:
      - clients-service:/target/in_the_container

推荐阅读