Leh*_*hks 4 docker docker-compose
我正在使用 docker compose 来设置应用程序环境。有两个不同的环境:测试和生产。
在测试环境中,我需要公开其他端口(用于调试)。这些端口在生产环境中应保持关闭状态。
我也想使用相同的图像和docker-compose.yml文件。使用相同的图像没有问题,但我在撰写文件时遇到了困难。在其中,我想根据环境变量打开或关闭端口。
当前的设置几乎是标准的,如下所示:
# ...
ports:
- "8080:8080" # HTTP Server port
- "9301:9301" # debug port
# ...
Run Code Online (Sandbox Code Playgroud)
在此示例中,两个端口始终暴露。仅当设置了9301某个环境变量(例如 )时,是否可以公开端口?EXPOSE_DEBUG
您可以使用配置文件或第二个撰写文件。
services:
app-prod:
&app
image: busybox
profiles:
- production
ports:
- 8080:8080
app-dev:
<<: *app
profiles:
- development
ports:
- 8080:8080
- 9090:9090
Run Code Online (Sandbox Code Playgroud)
然后您可以使用以下命令或环境变量来设置配置文件COMPOSE_PROFILES。
docker compose --profile <profile-name> up
Run Code Online (Sandbox Code Playgroud)
或者,您可以使用第二个撰写文件并覆盖端口。
docker compose --profile <profile-name> up
Run Code Online (Sandbox Code Playgroud)
# compose.yaml
services:
app:
image: busybox
ports:
- 8080:8080
Run Code Online (Sandbox Code Playgroud)
然后你可以使用主文件后面的文件来修补它:
docker compose -f compose.yaml -f compose.dev.yaml up
Run Code Online (Sandbox Code Playgroud)
要使用的文件也可以通过环境变量COMPOSE_FILE,进行控制。
如果您将文件命名为compose.override.yaml,docker 将自动使用它,因此您不必使用 -f 标志来指向它。如果您选择这样做,请注意不要将此文件添加到生产系统中。
您还可以将调试端口绑定到环回接口(127.0.0.1),这样您只能在本地访问它。
# compose.dev.yaml
services:
app:
ports:
- 8080:8080
- 9090:9090
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2703 次 |
| 最近记录: |