从docker run传递参数到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,但这会让人感到困惑。 我不知道如何将docker run命令的envvariables传递给dockerfile。

我相信有一个办法可以做到。

谁可以帮我这个事?

你可以把参数传给

docker run

所以,当你运行一个容器

只是检查

docker run --help

你会得到,除其他事情

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

ENV在build造时被照顾

如果你想

“我不知道如何将docker run命令的envvariables传递给dockerfile”

你不能, docker run从一个创build的图像启动一个容器,一个Dockerfile可以帮助你build立一个新的图像

stream量

Dockerfile – > docker docker build -t myuser/myimage:v12.3 . 我的新形象

启动一个容器docker run myuser/myimage:v12.3 myoptions从我的镜像myuser / myimage:v12.3