将变量从docker-compose.yml文件传递给Dockerfile

luk*_*aus 21 docker

我有几个docker-compose.yml文件,我想使用相同的Dockerfile,稍有变化.所以我想将一个参数传递给该Dockerfile,以便我可以根据变量设置的值做一些略微不同的事情.

到目前为止我尝试过的

docker-compose-A.yml文件

version: '2'

services:
  django:
    build:
      context: .
      dockerfile: ./docker/Dockerfile
      args:
        - SOMETHING=foo
Run Code Online (Sandbox Code Playgroud)

docker-compose-B.yml文件

version: '2'

services:
  django:
    build:
      context: .
      dockerfile: ./docker/Dockerfile
      args:
        - SOMETHING=bar
Run Code Online (Sandbox Code Playgroud)

我有一个dockerfile我想使用SOMETHING.例如

# Dockerfile
RUN echo $SOMETHING
Run Code Online (Sandbox Code Playgroud)

这不起作用.SOMETHING未传递给dockerfile.

我这样做不正确还是这不是预期用途?

有没有其他方法可以从docker-compose.yml文件将变量传递给Dockerfile?

任何反馈都表示赞赏.谢谢

luk*_*aus 36

基本上我错过了在Dockerfile中声明arg.

# docker-compose.yml file

version: '2'

services:
  django:
    build:
      context: .
      dockerfile: ./docker/Dockerfile
      args:
        - SOMETHING=foo
Run Code Online (Sandbox Code Playgroud)

 

# Dockerfile
ARG SOMETHING
RUN echo $SOMETHING
Run Code Online (Sandbox Code Playgroud)


向@Lauri致敬,向我展示了光明.