将参数传递给docker撰写

时间:2017-04-21 13:42:08

标签: docker docker-compose

在我的docker compose文件中,有一个动态字段,我想在运行期间生成。实际上它是一个字符串模板:

environment:
    - SERVER_URL:https://0.0.0.0:${PORT}

我想动态配置此PORT参数

docker-compose run <service> PORT=443

documentation中设置了ARGS参数,我想我可以使用。但是没有信息我怎么能在compose文件中使用那些

4 个答案:

答案 0 :(得分:12)

在docker-compose中,参数仅在dockerfile中可用且有用。您可以在下面的级别中指定您正在执行的操作,如下所示:

#dockerfile
ARG PORT
ENV SERVER_URL "https://0.0.0.0:$PORT"

您的端口可以在docker-compose.yml中设置:

build:
  context: .
  args:
    - PORT=443

在任何情况下,它实际上都是一个环境变量。如果适合你,你可以通过你的运行命令传递它:

PORT=443 docker-compose run <service>
#or
docker-compose run <service> -e PORT=443

答案 1 :(得分:10)

使用docker-compose build时可以使用该标志

docker-compose build --build-arg PRODUCTION=VALUE

在Dockerfile中,您可以获取参数PRODUCTION

# Dockerfile
ARG PRODUCTION
FROM node:latest

答案 2 :(得分:2)

请参阅此answer。您可以这样操作:PORT=433 docker-compose <command>

您甚至可以提供多个值:PORT=433 MYIP='192.168.123.456' docker-compose <command>

答案 3 :(得分:0)

可以使用stack deploy

示例撰写环境部分中的文件:

- MY_VARIABLE_NAME=${MY_VARIABLE_VALUE}

Stack Deploy Command(我在Windows中从Gitbash运行):

MY_VARIABLE_VALUE=some-value docker stack deploy --compose-file compose_file_here stackname


<强>参考 请参阅此Github帖子here