Ans*_*rma 5 docker dockerfile docker-compose
我有 2 个需要一起运行的 docker-compose 文件,文件的位置就像
/home/project1/docker-compose.yml
和
/home/project2/docker-compose.yml
所以很明显这两个服务应该有不同的上下文路径
但是当我在 docker compose 命令下运行时
docker-compose -f /home/project1/docker-compose.yml -f /home/project2/docker-compose.yml 配置
我看到,两个服务都获得了相同的上下文路径
app:
build:
context: /home/project1
dockerfile: Dockerfile
app2:
build:
context: /home/project1
dockerfile: Dockerfile
Run Code Online (Sandbox Code Playgroud)
我该如何解决这个问题我希望我的两个服务都有自己的项目路径,即。
应用服务应该有上下文路径 /home/project1
和
app2 服务应该有上下文路径 /home/project2
选项 1:对两个 docker-compose 文件中的上下文使用绝对路径
选项 2:使用绝对路径创建 docker-compose.override.yml:
version: "3"
services:
service1:
build:
context: /home/project1
service2:
build:
context: /home/project2
Run Code Online (Sandbox Code Playgroud)
并将其包含在 docker-compose 命令中:
docker-compose -f /home/project1/docker-compose.yml -f /home/project2/docker-compose.yml -f /home/docker-compose.override.yml config
Run Code Online (Sandbox Code Playgroud)
在 Linux 上,为了避免在 docker-compose.override.yml 中硬编码基本路径,您可以使用 PWD 环境变量:
services:
service1:
build:
context: ${PWD}/project1
service2:
build:
context: ${PWD}/project2
Run Code Online (Sandbox Code Playgroud)
我发现可以运行多个服务的方式是:
1. 首先使用 docker build 命令为所有服务创建镜像
例如:在我的例子中,它是一个带有 Maven 构建工具的 Java 应用程序,所以我使用的命令:
mvn clean package docker:build -Denv=$ENV -DskipTests
2. 构建完所有镜像后,创建一个通用的 docker-compose 文件,如下所示
version: '3'
services:
service1:
image: <service1-image>
ports:
- "8100:8080"
environment:
- TZ=Asia/Kolkata
- MYSQL_USER=root
- MYSQL_PASSWORD=unroot
ulimits:
nproc: 65535
nofile:
soft: 65535
hard: 65535
service2:
image: <service2-image>
ports:
- "8101:8080"
environment:
- TZ=Asia/Kolkata
- MYSQL_USER=root
- MYSQL_PASSWORD=unroot
ulimits:
nproc: 65535
nofile:
soft: 65535
hard: 65535
service3:
image: <service3-image>
environment:
- TZ=Asia/Kolkata
- MYSQL_USER=root
- MYSQL_PASSWORD=unroot
ulimits:
nproc: 65535
nofile:
soft: 65535
hard: 65535
networks:
default:
external:
name: dev
Run Code Online (Sandbox Code Playgroud)
方式我已经提到了mysql的root、密码,也可以添加环境变量。
3.然后运行以下命令来运行所有服务
docker-compose -f docker-compose.yml up
或运行以下命令来运行特定服务
docker-compose -f docker-compose.yml up service1
这对我来说效果很好,这需要 1 次设置,但之后就会非常简单和快速。
| 归档时间: |
|
| 查看次数: |
2465 次 |
| 最近记录: |