docker - 如何在 docker-compose 子 Dockerfile FROM 子句中使用环境变量
问题描述
我正在使用 docker-compose 来构建一些 dockerfile。我正在使用环境变量$IMAGE_TAG
来标记图像
game-client:
image: 09809809.dkr.ecr.us-east-1.amazonaws.com/crashgiants-web:${IMAGE_TAG}
build:
context: ..
dockerfile: devops/client.Dockerfile
args:
- IMAGE_TAG=${IMAGE_TAG}
- SIGNALHUB_HOST=crashgiants.io
- SOCKETIO_HOST=crashgiants.io
- TURNSERVER_HOST=crashgiants.io
- ASSET_HOST=crashgiants.io
ports:
- "80:80"
我有一个client.Dockerfile
带有FROM
如下子句的 dockerfile:
FROM 0809809708.dkr.ecr.us-east-1.amazonaws.com/crashgiants:$IMAGE_TAG as game-base
我可以将环境变量获取到 docker-compose ok 但不确定如何在孩子中使用它client.Dockerfile
我正在调用撰写文件:IMAGE_TAG=local_tester docker-compose -f ./devops/docker-compose.yml build
这当前会引发错误
Building game-client
Traceback (most recent call last):
File "compose/cli/main.py", line 67, in main
File "compose/cli/main.py", line 126, in perform_command
File "compose/cli/main.py", line 302, in build
File "compose/project.py", line 468, in build
File "compose/project.py", line 450, in build_service
File "compose/service.py", line 1147, in build
compose.service.BuildError: (<Service: game-client>, {'message': 'No build stage in current context'})
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "docker-compose", line 3, in <module>
File "compose/cli/main.py", line 78, in main
TypeError: can only concatenate str (not "dict") to str
[95080] Failed to execute script docker-compose
一些有关can only concatenate str (not "dict") to str
解决方案
修改你的 dockerfile 如下:
ARG IMAGE_TAG=latest
FROM 0809809708.dkr.ecr.us-east-1.amazonaws.com/crashgiants:$IMAGE_TAG as game-base
ARG IMAGE_TAG
这会将IMAGE_TAG
as 参数暴露给图像。第二个ARG IMAGE_TAG
是如果你想在图像构建中使用参数,因为之前的参数FROM
将在不同的上下文中。
推荐阅读
- python - 使用动态变量名称,作为函数/方法的参数
- python - SimpleITK 中从 3D 数组构建 2D RGB 图像
- c# - 如何从 Appsettings.json 中获取要在 Startup.cs 中使用的值?
- javascript - 自定义普鲁米销毁逻辑
- python - 什么时候适合使用 Python 类来组织代码?
- credit-card - Elavon Converge Pay - 什么是 ssl_test_mode?
- gcc - 在 MSYS2 中使用 MinGW-64 构建 GLEW 失败 - make: i686-w64-mingw32-ld: Command not found
- php - 有条件显示HTML表格结构时如何避免冗余
- excel - 是否可以将用户表单文本框中的值粘贴到用户表单外部按钮的单元格中?
- c++ - 解析 xml 时无法获取属性的名称和值