我正在处理一项任务,该任务涉及使用 Dockerfile 构建一个以 centOs 为基础的 docker 镜像。 dockerfile 中的步骤之一需要设置 http_proxy 和 https_proxy ENV 变量才能在代理后面工作。
由于这个 Dockerfile 将被具有不同代理的多个团队使用,我想避免必须为每个团队编辑 Dockerfile。相反,我正在寻找一种允许我在构建时传递 ENV 变量的解决方案,例如,
sudo docker build -e http_proxy=somevalue .
我不确定是否已经有提供此功能的选项。我错过了什么吗?
最佳答案
可以使用 build arguments
(在 Docker 1.9+ 中)构建容器,其工作方式类似于环境变量。
方法如下:
FROM php:7.0-fpm
ARG APP_ENV=local
ENV APP_ENV ${APP_ENV}
RUN cd /usr/local/etc/php && ln -sf php.ini-${APP_ENV} php.ini
然后构建一个生产容器:
docker build --build-arg APP_ENV=prod .
针对您的特定问题:
FROM debian
ENV http_proxy ${http_proxy}
然后运行:
docker build --build-arg http_proxy=10.11.24.31 .
请注意,如果您使用 docker-compose
构建容器,您可以 specify these build-args in the docker-compose.yml
file ,但不在命令行上。但是,您可以使用 variable substitution in the docker-compose.yml
file, which uses environment variables .
关于docker - 我们可以在通过 dockerfile 构建 docker 镜像的同时通过 cmd 行传递 ENV 变量吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31198835/