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

标签 docker

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

到目前为止我已经尝试过什么

docker-compose-A.yml 文件

version: '2'

services:
  django:
    build:
      context: .
      dockerfile: ./docker/Dockerfile
      args:
        - SOMETHING=foo

docker-compose-B.yml 文件

version: '2'

services:
  django:
    build:
      context: .
      dockerfile: ./docker/Dockerfile
      args:
        - SOMETHING=bar

我有一个 dockerfile 我想在其中使用 SOMETHING。例如

# Dockerfile
RUN echo $SOMETHING

这行不通。有些东西没有传递给 dockerfile。

这是我做错了还是这不是预期的用途?

还有其他方法可以将变量从 docker-compose.yml 文件传递​​到 Dockerfile 吗?

最佳答案

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

# docker-compose.yml file

version: '2'

services:
  django:
    build:
      context: .
      dockerfile: ./docker/Dockerfile
      args:
        - SOMETHING=foo

 

# Dockerfile
ARG SOMETHING
RUN echo $SOMETHING


感谢@Lauri 向我展示了光明。

关于docker - 从 docker-compose.yml 文件将变量传递给 Dockerfile,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36738381/

相关文章:

docker - 如何找到正在处理请求的Kubernetes Pod

docker - SDKManager 安装 - 无 ARM 文件

docker - 如何将 Deployer 与 Docker (Laradock) 一起使用

ruby-on-rails - Docker Rails 应用程序无法提供服务 - curl : (56) Recv failure: Connection reset by peer

docker - 以 root 用户身份运行容器

amazon-web-services - 在 ECS Docker 中为 Selenium Chrome Hub 动态设置环境变量

postgresql 容器未启动 : chmod: changing permissions of '/bitnami/postgresql/data' : Operation not permitted

node.js - Docker + Node.js + Windows

docker - 在Docker中构建时间长的微服务

selenium - docker selenium远程服务器如何阻止或将ips列入白名单