当前位置: 首页 > 知识库问答 >
问题:

Docker-compose扩展未找到环境变量

凤自珍
2023-03-14
  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  
version: '2.0'

services:
  pitch-common-env:
    environment:
      APP_VOL_DIR: Sites
      WEB_ROOT_FOLDER: web
      CONFIG_FOLDER: app/config
      APP_NAME: sony_pitch
# 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

我猜这是因为它没有$app_vol_dir,但为什么会这样呢?如果docker compose扩展了另一个定义Environment:variables的compose文件

共有1个答案

朱保赫
2023-03-14

您可以为此使用构建时参数。

在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设置为构建参数:

pitchjob-fpm01:
  container_name: pitchjob-fpm01     
  env_file: 
    - env/base.env 
  build:
    context: ./pitch
    dockerfile: PitchjobDockerfile
    args:
      - app_vol_dir=Sites
 类似资料:
  • 这是我的Docker-Compose:

  • 问题内容: 我正在尝试设置一个postgres容器,并希望使用以下命令设置postgres登录名: 所以我像这样创建了docker-compose.yml 我还尝试了将环境变量声明为db部分的其他语法: 但是这些选项似乎都不起作用,因为无论出于什么原因,无论何时我尝试使用各种连接字符串连接到postgres数据库: 与抱怨没有用户数据库相反,它们都给我身份验证失败。 问题答案: 您收到的身份验证错

  • 这个码头商。yml: 使用这个。env文件(它位于根文件夹中,如docker-compose.yml和Dockerfile): 和节点服务器启动中的以下代码: 我真的更喜欢使用第一种或第二种方法 docker版本:18.06.1-CE docker-compose版本:1.19.0

  • 问题内容: 使用v2,可以简单地设置环境变量: 完整文件为: 但是,如何转义不是纯字符串的环境变量? 我试过了: 错误:yaml.parser.ParserError:解析“ ./docker-compose.yml”第6行中的块映射时,预期第9列,但在“ ./docker-compose.yml”第6行中找到了“}”。第92栏 问题答案: 环境变量(包括姓名), 有单或双引号内被完全包裹 :或

  • 问题内容: 是否可以重用在多个容器之间共享的环境变量以避免重复,如本示例所示: 问题答案: 该选项可能是好的,但它不支持在撰写文件。其他走的方式是: 扩展名字段(撰写文件3.4+) 如果可以使用3.4+组成文件,则扩展名字段可能是最佳选择: docker-compose.yml env_file指令 docker-compose.yml variables.env * 项目根目录中的 *.env

  • 我想对我的vuejs应用程序进行dockerize,并从docker-compose文件中传递环境变量。 我怀疑应用程序只在构建阶段获得环境变量,因此它不会从Docker-Compose获得环境变量。 Docker-Compose: 在构建阶段之后,有什么方法可以将环境变量传递给web应用程序吗?