gpt4 book ai didi

docker - 如何在我的 CMD 脚本中设置环境变量

转载 作者:行者123 更新时间:2023-12-02 21:19:20 45 4
gpt4 key购买 nike

我有以下入口文件

FROM <image-of-nodejs>

COPY docker/node/entry.sh /var/entries/entry.sh
RUN apt-get update
RUN apt-get install ant -y
CMD ["/var/entries/entry.sh"]

该图像由 docker-compose 文件使用:
version: "3.3"

services:
my_node:
build:
context: ./
dockerfile: docker/node/Dockerfile-build-dev
volumes:
- type: bind
source: ./
target: /var/proj

entry.sh 文件如下:
#!/bin/bash
export QNAMAKER_SUB_KEY=b13615t

如果我然后启动图像并进入 docker,我将找不到我的 env 变量集:
docker-compose up --force-recreate -d
docker-compose run my_node bash

root@9c081bedde65:/# echo ${QNAMAKER_SUB_KEY}

<empty>

我更愿意通过我的脚本设置我的变量来代替 ENV Dockerfile 命令。怎么了?

最佳答案

这里发生了几件事。

一、docker-compose run不在您以 docker-compose up 启动的容器内运行命令.它启动一个新容器来运行一次性命令。你可能想要 docker-compose exec .

使用 docker-compose run 时看不到变量的原因是你覆盖了你的CMD通过在 bash 上提供新命令 ( docker-compose run )命令行。

你可以考虑:

  • 使用 ENV您的 Dockerfile 中的声明.
  • 使用 environment输入您的docker-compose.yml

  • 前者会将信息嵌入到您的图像中,而后者意味着如果您没有在 docker-compose.yaml 中明确设置该变量,则该变量将被取消设置。文件(或在 -e 命令行上使用 docker run)。

    您可以使用 ENTRYPOINT 来实现您的目标。脚本并在那里设置值,但这不会影响使用 docker exec 时对您可见的环境(或 docker-compose exec )。

    关于docker - 如何在我的 CMD 脚本中设置环境变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47659190/

    45 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com