是否从docker-compose.yml中引用Dockerfile?
我有一个web服务,它使用MySQL作为其后台存储。我想将这个服务以及它的MySQL数据库Dockerize。对于该服务,我有以下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
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?这个问题是关于主题的,不是重复的,显示了努力/研究,并提供了简洁的可复制代码示例。¯\_(ツ)_/¯