python - Docker compose 从 .env 文件中获取环境变量并传递给 docker build
问题描述
我希望能够为我的 docker 容器配置 env 变量,并在构建过程中使用 .env 文件
我目前有以下.env
文件:
SSH_PRIVATE_KEY=TEST
APP_PORT=8040
我的码头工人撰写:
version: '3'
services:
companies:
image: companies8
environment:
- SSH_PRIVATE_KEY=${SSH_PRIVATE_KEY}
ports:
- ${APP_PORT}:${APP_PORT}
env_file: .env
build:
context: .
args:
- SSH_PRIVATE_KEY=${SSH_PRIVATE_KEY}
我的Dockerfile:
FROM python:3.7
# set a directory for the app
COPY . .
#Accept input argument from docker-compose.yml
ARG SSH_PRIVATE_KEY=abcdef
ENV SSH_PRIVATE_KEY $SSH_PRIVATE_KEY
RUN echo $SSH_PRIVATE_KEY
# Pass the content of the private key into the container
RUN mkdir -p /root/.ssh
RUN chmod 400 /root/.ssh
RUN echo "$SSH_PRIVATE_KEY" > /root/.ssh/id_rsa
RUN echo "$SSH_PUBLIC_KEY" > /root/.ssh/id_rsa.pub
RUN chmod 400 /root/.ssh/id_rsa
RUN chmod 400 /root/.ssh/id_rsa.pub
RUN eval $(ssh-agent -s) && ssh-add /root/.ssh/id_rsa && ssh-keyscan bitbucket.org > /root/.ssh/known_hosts
RUN ssh -T git@bitbucket.org
#Install the packages
RUN pip install -r v1/requirements.txt
# Tell the port number the container should expose
EXPOSE 8040
# run the command
CMD ["python", "v1/__main__.py"]
我在我的窗口上设置了相同的 SSH_PRIVATE_KEY 环境变量,值为“test1”,构建日志给了我结果“test1”
ENV SSH_PRIVATE_KEY $SSH_PRIVATE_KEY
RUN echo $SSH_PRIVATE_KEY
不是 .env 文件中的值。
我需要这个,因为我的 requirements.txt 中列出的一些库位于内部存储库中,我需要 ssh 来访问它们,因此需要 ssh 私钥。可能有另一种正确的方法来使用它,但它是我想要实现的一般场景 - 将 env 变量值从 .env 文件传递到我的 docker build
解决方案
推荐阅读
- flutter - 如何将用户号码重定向到电话应用程序颤动
- ios - iPhone 12 压缩视频制作蓝色视频
- amazon-web-services - S3 需要哪些权限才能让 AWS MediaConverter 有权写入文件?
- unetstack - 在 macOS 中安装 Unet 音频时找不到本机库`yoda_phy_pa_x86_64`
- javascript - 在 Dart 和 JavaScript 之间传递对象列表——转换列表
列出 - javascript - 错误 TS2305:模块 @types/angular 没有导出的成员“cookies”
- c# - LINQ:通过获取对象及其计数进行分组
- angular-material - 角度材料对话框在生产构建中不起作用
- python - 三元拆箱清单
- javascript - 从数组 .map 输出 [object object]