将参数从docker run传递给dockerfile

时间:2017-04-20 06:19:42

标签: docker dockerfile

下面是我的docker build命令

docker build -t test/magento2:1.0.0 --build-arg BASE_URL=http://www.hostname.net/ --build-arg DATABASE_HOST=localhost --build-arg DATABASE_NAME=magento --build-arg DATABASE_USER=root --build-arg DATABASE_PASSWORD=root --build-arg ADMIN_USERNAME=test --build-arg ADMIN_FIRSTNAME=test --build-arg ADMIN_LASTNAME=Mobi --build-arg ADMIN_EMAIL=support@test.mobi --build-arg ADMIN_PASSWORD=test@123 --build-arg DEFAULT_LANGUAGE=en_US --build-arg DEFAULT_CURRENCY=INR --build-arg DEFAULT_TIMEZONE=Asia/Kolkata --build-arg BACKEND_FRONTNAME=admin .

Dockerfile

ARG BASE_URL
ARG DATABASE_HOST
ARG DATABASE_NAME
ARG DATABASE_USER
ARG DATABASE_PASSWORD
ARG ADMIN_USERNAME
ARG ADMIN_FIRSTNAME
ARG ADMIN_LASTNAME
ARG ADMIN_EMAIL
ARG ADMIN_PASSWORD
ARG DEFAULT_LANGUAGE
ARG DEFAULT_CURRENCY
ARG DEFAULT_TIMEZONE
ARG BACKEND_FRONTNAME

RUN service mysql start && \
    cd /var/www/html && php bin/magento setup:install --base-url=$BASE_URL --db-host=$DATABASE_HOST --db-name=$DATABASE_NAME --db-user=$DATABASE_USER --db-password=$DATABASE_PASSWORD --admin-firstname=$ADMIN_FIRSTNAME --admin-lastname=$ADMIN_LASTNAME --admin-email=$ADMIN_EMAIL --admin-user=$ADMIN_USERNAME --admin-password=$ADMIN_PASSWORD --language=$DEFAULT_LANGUAGE --currency=$DEFAULT_CURRENCY --timezone=$DEFAULT_TIMEZONE --use-rewrites=1 --backend-frontname=$BACKEND_FRONTNAME

工作正常,但我正在寻找一些东西

docker run <here I need to pass my arguments>

我正在考虑 ENV ,但这会造成混乱。我不知道如何将env变量从docker run命令传递给dockerfile。

我相信还有办法。

任何人都可以帮我吗?

1 个答案:

答案 0 :(得分:2)

你可以将参数传递给

docker run

所以,当你运行一个容器

只需检查

docker run --help

你会得到,除其他外

-e, --env value Set environment variables (default []) --env-file value Read in a file of environment variables (default [])

ENV在构建时负责

如果你想要

“我不知道如何将env变量从docker run命令传递给dockerfile”

你不能,docker run从创建的图像中启动容器,Dockerfile可以帮助你构建新图像

流程

Dockerfile - &gt; docker build -t myuser/myimage:v12.3 .我的新形象

从我的图片myuser / myimage:v12.3

中启动容器docker run myuser/myimage:v12.3 myoptions