可以在dockerfile中获取git分支名称吗?

时间:2018-03-06 15:25:07

标签: angular docker dockerfile

不确定这是否可行。但我想要的是改变dockerfile中的这行代码

RUN $(npm bin)/ng build --prod --env=prod

RUN $(npm bin)/ng build --prod --env=test

或者更好的我如何在gitbal-ci.yml文件中制作类似的东西:

# Production build
build:
  stage: build
  script:
    - docker build --pull -t $CONTAINER_ENV_IMAGE .
    - docker push $CONTAINER_ENV_IMAGE
  args:
    - env=prod
  only:
    - master

# Test build
build:
  stage: build
  script:
    - docker build --pull -t $CONTAINER_ENV_IMAGE .
    - docker push $CONTAINER_ENV_IMAGE
  args:
    - env=test
  except:
    - master

但仅当git分支名称为test时。我正在使用gitlab来构建图像。

我需要这个以便以角度更改api url环境变量。 这可能还是有更好的方法吗?

2 个答案:

答案 0 :(得分:2)

Dockerfile支持build argumentsenvironment variables。因此可以指定要使用的分支,然后根据分支决定命令。例如,要传递构建args,请使用docker build - build-arg =。然后,您可以根据决定要使用的env的git_branch变量设置变量。

FROM busybox
ARG git_branch
RUN echo “Building $git_branch”

答案 1 :(得分:2)

在docker 1.9中,沿途的一个步骤是使用构建参数来使用构建参数区分prod和dev环境:

docker build --build-arg local_config=test

在docker文件中:

RUN $(npm bin)/ng build --prod --env=$local_config