Docker 如何在我的CMD脚本中设置env变量
我有下面的entryfileDocker 如何在我的CMD脚本中设置env变量,docker,docker-compose,Docker,Docker Compose,我有下面的entryfile 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"] entry.sh文件如下所示: #!/bin/bash export QNAMAKER_SUB_KEY=b13615t 如果启动映像并输入docker,则找不
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"]
entry.sh文件如下所示:
#!/bin/bash
export QNAMAKER_SUB_KEY=b13615t
如果启动映像并输入docker,则找不到环境变量集:
docker-compose up --force-recreate -d
docker-compose run my_node bash
root@9c081bedde65:/# echo ${QNAMAKER_SUB_KEY}
<empty>
docker编写-强制重新创建-d
docker compose运行我的节点bash
root@9c081bedde65:/#echo${QNAMAKER_SUB_KEY}
我更喜欢通过脚本来设置变量,而不是使用
ENV
Dockerfile命令。怎么了 这里发生了几件事
首先,docker compose run
不会在使用docker compose up
启动的容器内运行命令。它启动一个新容器来运行一次性命令。您可能需要docker compose exec
使用docker compose run
时看不到该变量的原因是,通过在docker compose run
命令行上提供新命令(bash
)来覆盖CMD
你可以考虑:
- 在
中使用Dockerfile
语句ENV
- 使用
输入您的环境
docker compose.yml
docker compose.yaml
文件中明确设置变量(或在docker run
命令行上使用-e
),则该变量将被取消设置
您可以使用
ENTRYPOINT
脚本并在其中设置值来实现目标,但这不会影响您在使用docker exec
(或docker compose exec
)时看到的环境
首先,docker compose run
不会在使用docker compose up
启动的容器内运行命令。它启动一个新容器来运行一次性命令。您可能需要docker compose exec
使用docker compose run
时看不到该变量的原因是,通过在docker compose run
命令行上提供新命令(bash
)来覆盖CMD
你可以考虑:
- 在
中使用Dockerfile
语句ENV
- 使用
输入您的环境
docker compose.yml
docker compose.yaml
文件中明确设置变量(或在docker run
命令行上使用-e
),则该变量将被取消设置
您可以使用ENTRYPOINT
脚本并在其中设置值来实现目标,但这不会影响使用docker-exec
(或docker-compose-exec
)时对您可见的环境
docker-compose up --force-recreate -d
docker-compose run my_node bash
root@9c081bedde65:/# echo ${QNAMAKER_SUB_KEY}
<empty>