下面是我的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。
我相信还有办法。
任何人都可以帮我吗?
答案 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