将空字符串(双引号)参数传递给 dockerfile

Pass empty string (double quote) argument to dockerfile

我的项目在 2 个环境中被 Docker 和 运行 包裹:在代理后面 没有代理

在这种情况下,我使用php:apache镜像并通过pecl安装ext,所以我必须手动设置代理

FROM php:apache

RUN pear config-set http_proxy $http_proxy
# RUN pecl install mongodb && docker-php-ext-enable mongodb

$http_proxy arg 将从 docker 传递 - 组成 2 个值:http://server:port“”(双引号)

但是在 “” 的情况下构建自定义图像时,$http_proxy arg 为空,并在配置命令中显示错误

Step 4/4 : RUN pear config-set http_proxy $http_proxy

—> Running in 19b69d089ff2

config-set expects 2 or 3 parameters

既然是RUN命令,可以加个测试:

docker build -t my_apache .  --build-arg http_proxy=....

使用 Dockerfile:

ARG http_proxy
RUN if [ "x$http_proxy" != "x" ] ; then  pear config-set http_proxy $http_proxy; fi 

您实际上不需要 ARG http_proxy,因为它是 one of the predefined ones