Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/docker/9.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
是否从docker-compose.yml中引用Dockerfile?_Docker_Docker Compose_Dockerfile - Fatal编程技术网

是否从docker-compose.yml中引用Dockerfile?

是否从docker-compose.yml中引用Dockerfile?,docker,docker-compose,dockerfile,Docker,Docker Compose,Dockerfile,我有一个web服务,它使用MySQL作为其后台存储。我想将这个服务以及它的MySQL数据库Dockerize。对于该服务,我有以下Dockerfile: FROM openjdk:8-jdk-alpine as cce COPY build/libs/my-service.jar my-service.jar EXPOSE 9200 ENTRYPOINT [ \ "java", \ "-Ddb.hostAndPort=my-service-db

我有一个web服务,它使用MySQL作为其后台存储。我想将这个服务以及它的MySQL数据库Dockerize。对于该服务,我有以下Dockerfile:

FROM openjdk:8-jdk-alpine as cce

COPY build/libs/my-service.jar my-service.jar

EXPOSE 9200

ENTRYPOINT [ \
    "java", \
    "-Ddb.hostAndPort=my-service-db:3306", \
    "-Ddb.name=my_service_db_local", \
    "-Ddb.username=my-service-user", \
    "-Ddb.password=abc123", \
    "-jar", \
    "my-service.jar" \
]
docker build - < Dockerfile
如果我正确理解Docker生态系统,听起来我可以编写Docker Compose文件来加速MySQL容器实例和web服务容器实例。因此,我启动了一个
docker compose.yml
文件,看起来是这样的:

version: "3.7"
services:
  my-service-db:
    image: mysql:8
    container_name: my-service-db
    command: --default-authentication-plugin=mysql_native_password
    restart: always
    ports:
      - 3306:3306
    environment:
      MYSQL_ROOT_PASSWORD: r00tdud3
      MYSQL_DATABASE: my_service_db_local
      MYSQL_USER: my-service-user
      MYSQL_PASSWORD: abc123
    volumes:
      - ./my-service-db-data:/var/lib/mysql
  my-service:
    ??? how to specify local Dockerfile here ???
    depends_on:
      - my-service-db
通过我自己的修补,我确信MySQL容器的配置是正确的。现在我只是想弄清楚如何告诉docker compose.yml文件(它将位于我的项目的根目录中,与Dockerfile相邻)使用服务的Dockerfile,这取决于MySQL容器的首次启动/运行。我想我已经很接近了,但是我很难越过终点线


有人能帮我配置
docker compose.yml
来创建一个名为
my service
的服务,该服务使用本地
Dockerfile
进行配置吗?

您可以从Dockerfile创建一个映像:

FROM openjdk:8-jdk-alpine as cce

COPY build/libs/my-service.jar my-service.jar

EXPOSE 9200

ENTRYPOINT [ \
    "java", \
    "-Ddb.hostAndPort=my-service-db:3306", \
    "-Ddb.name=my_service_db_local", \
    "-Ddb.username=my-service-user", \
    "-Ddb.password=abc123", \
    "-jar", \
    "my-service.jar" \
]
docker build - < Dockerfile
另一种选择是简单地写:

my-service: 
   build: .

告诉图像。(您可能不想硬编码数据库主机名等配置参数,尤其是密码等凭据;请尝试在部署时将它们作为环境变量或使用其他机制传递。)为什么要使用DV?这个问题是关于主题的,不是重复的,显示了努力/研究,并提供了简洁的可复制代码示例。¯\_(ツ)_/¯