docker - Docker-compose扩展找不到环境变量

标签 docker docker-compose dockerfile

我有一部分docker-compose文件
docker-compose.yml

  pitchjob-fpm01:
    container_name: pitchjob-fpm01     
    env_file: 
      - env/base.env 
    build:
      context: ./pitch
      dockerfile: PitchjobDockerfile
    volumes:
      - "/Sites/pitch/pitchjob/:/Sites"
    restart: always 
    depends_on:
      - memcached01
      - memcached02      
    links: 
      - memcached01
      - memcached02
    extends:
      file: "shared/common.yml"
      service: pitch-common-env  
我的扩展yml文件是
compose.yml
version: '2.0'

services:
  pitch-common-env:
    environment:
      APP_VOL_DIR: Sites
      WEB_ROOT_FOLDER: web
      CONFIG_FOLDER: app/config
      APP_NAME: sony_pitch
在pitchjob-fpm01的docker文件中,我有一个像这样的命令
PitchjobDockerfile
# Set folder groups
RUN chown -Rf www-data:www-data /$APP_VOL_DIR
但是当我运行命令调出堆栈时
docker-compose -f docker-compose-base.yml up --build --force-recreate --remove-orphans
我收到以下错误

failed to build: The command '/bin/sh -c chown -Rf www-data:www-data /$APP_VOL_DIR' returned a non-zero code: 1


我猜这是因为它没有$ APP_VOL_DIR,但是为什么这样做,如果docker compose扩展了另一个定义
环境变量

最佳答案

您可以为此使用build-time arguments

在Dockerfile中定义:

ARG APP_VOL_DIR=app_vol_dir
# Set folder groups
RUN chown -Rf www-data:www-data /$APP_VOL_DIR

然后在docker-compose.yml中将app_vol_dir设置为build参数:
pitchjob-fpm01:
  container_name: pitchjob-fpm01     
  env_file: 
    - env/base.env 
  build:
    context: ./pitch
    dockerfile: PitchjobDockerfile
    args:
      - app_vol_dir=Sites

关于docker - Docker-compose扩展找不到环境变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37591158/

相关文章:

Dockerfile 不接收环境变量

python - 模块导入错误,如何刷新Ipython session ?

docker - 如何创建子域以公开运行到 Jenkins 管道中的 docker 容器中的应用程序

mongodb - 为不存在的数据库创建用户不起作用

reactjs - 当我们使用react/next时,为什么需要在docker-compose中添加volume选项?

docker - 在dockerfile和docker-compose文件中使用 “expose”的区别?

docker - mkdir : cannot create directory '/ffa_app' : Permission denied

带有 postgresql 和 redis 的 Docker 镜像

docker - Traefik 2.0和docker简单配置无法正常工作

azure - 主机路径不允许作为卷源,您需要引用 'volumes' 部分中定义的 Azure 文件共享