在dockerfile中添加和使用变量

时间:2018-05-15 18:54:09

标签: dockerfile

我试图采用现有的Mantis Bug Tracker泊坞窗图像,并以一种取决于环境变量的方式扩展它,我将螳螂网站移动到相应的文件夹。这就是我想出的:

FROM vimagick/mantisbt:latest
MAINTAINER kev <me@janjko.hr>

RUN mkdir /var/www/tempMove && \
 mv /var/www/html/* /var/www/tempMove/ && \
 mkdir /var/www/html/${MANTIS_FOLDER:-mantis} && \
 mv /var/www/tempMove/* /var/www/html/${MANTIS_FOLDER:-mantis}

我使用$ {variable:-word}语法和&#34; mantis&#34;是默认的。当我使用这个图像时,网站总是在mantis文件夹中出现,这意味着,它并没有从docker-compose中获取我的字符串:

environment:
  - MANTIS_FOLDER=example

我做错了什么?

1 个答案:

答案 0 :(得分:0)

根据docker-compose文档,您需要使用ARGS:构建参数,这些参数只能在构建过程中访问。

  

注意:如果您的服务指定了构建选项,则定义的变量   在构建期间,环境不会自动显示。使用   构建的args子选项,用于定义构建时环境变量。

Dockerfile应修改为:

FROM vimagick/mantisbt:latest
MAINTAINER kev <me@janjko.hr>

ARG MANTIS_FOLDER

RUN mkdir /var/www/tempMove && \
 mv /var/www/html/* /var/www/tempMove/ && \
 mkdir /var/www/html/${MANTIS_FOLDER:-mantis} && \
 mv /var/www/tempMove/* /var/www/html/${MANTIS_FOLDER:-mantis}

docker-compose.yaml也应该修改:

version: '3'
services:
  service:
    build:
      context: .
      args:
        MANTIS_FOLDER: example