lig*_*sky 6 environment-variables docker gitlab-ci docker-compose
例如,有
.gitlab-cy.yml与ENV_BACKEND_URI可变
build:
stage: build
variables:
ENV_BACKEND_URI: "http://localhost:4200"
script:
- docker-compose build
Run Code Online (Sandbox Code Playgroud)
docker-compose 用途 dockerfile
FROM node:10-alpine as build-stage
...
...
...
RUN ["chmod", "+x", "/dummy.sh"]
...
...
Run Code Online (Sandbox Code Playgroud)
我想ENV_BACKEND_URI在dummy.sh脚本中使用这个变量
例如只是为了回应它
echo $ENV_BACKEND_URI
Run Code Online (Sandbox Code Playgroud)
我如何通过它?
我已经尝试将其设置 docker-compose.yml
environment:
- ENV_BACKEND_URI=${ENV_BACKEND_URI}
Run Code Online (Sandbox Code Playgroud)
但它在dockerfile也不可用dymmy.sh
如果我理解正确,那么您想将环境变量的值烘焙到您的图像中。请注意,您希望相反,即构建一个通用映像并通过设置环境变量来调整其行为。尽管如此,这两种方法还是相似的。
为了将环境变量的值烘焙到图像中,您必须使用ARGDockerfile 中的关键字指定环境变量的值,并通过在 shell 中--build-arg使用时docker build或通过args撰写文件中的关键字传递其值. 考虑以下 Dockerfile 和 docker-compose 文件:
文件
FROM alpine
ARG ENV_BACKEND_URI=$ENV_BACKEND_URI
RUN mkdir -p /app
RUN echo $ENV_BACKEND_URI > /app/script.sh
CMD ["cat", "/app/script.sh"]
Run Code Online (Sandbox Code Playgroud)
docker-compose.yml
version: "3.7"
services:
app:
build:
context: .
args:
ENV_BACKEND_URI: "google.de"
Run Code Online (Sandbox Code Playgroud)
使用ARGDockerfile 中的关键字,我们声明我们要ENV_BACKEND_URI在构建时使用该变量,其值应等于ENV_BACKEND_URI我们在构建期间收到的环境值。我们通过使用arg关键字在撰写文件中这样做。
调用后,docker-compose build && docker-compose up您最终会看到输出app_1 | google.de。如果您更喜欢使用该docker build命令,则必须先调用docker build --build-arg ENV_BACKEND_URI=google.de --tag=foo .
,然后通过调用docker run foo. 两者产生相同的输出,即,它们打印google.de到标准输出。
对于您的 CI/CD 用例,您必须将 compose 文件中的变量值设置为环境中变量的值,即ENV_BACKEND_URI: $ENV_BACKEND_URI.
| 归档时间: |
|
| 查看次数: |
5747 次 |
| 最近记录: |