You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Docker Compose多文件合并启动时LAPIS_ENV环境变量未识别问题

问题原因

environment块中配置的LAPIS_ENV是注入容器内部运行时的环境变量,而command字段中直接书写的${LAPIS_ENV}会在宿主机执行Compose配置解析的阶段完成变量替换,该阶段仅会读取执行docker compose命令的宿主机shell环境、同级目录.env文件中的变量,不会读取environment块定义的容器内变量,因此会提示变量未设置。该问题和多Compose文件的加载顺序无关,调换顺序不会改变变量替换的执行逻辑。

修复方法

将主配置文件中backend服务command字段里的${LAPIS_ENV}修改为$${LAPIS_ENV}即可。
Compose解析配置时会自动将$$转义为单个$,最终传入容器的启动命令为bash -c "/usr/local/bin/docker-entrypoint.sh ${LAPIS_ENV}",容器内执行该命令时,会自动读取environment块配置的LAPIS_ENV变量值,多文件合并的环境配置可以正常生效。

修改后的command配置片段:

command: bash -c "/usr/local/bin/docker-entrypoint.sh $${LAPIS_ENV}"

附原始相关配置

主配置 docker-compose.yml

version: '2.4'

services:
  backend:
    mem_limit: 50mb
    memswap_limit: 50mb
    build:
      context: ./backend
      dockerfile: Dockerfile
    depends_on:
      - postgres
    volumes:
      - ./backend:/var/www
      - ./data:/var/data
    restart: unless-stopped
    command: bash -c "/usr/local/bin/docker-entrypoint.sh ${LAPIS_ENV}"

  postgres:
    build:
      context: ./postgres
      dockerfile: Dockerfile
    environment:
      PGDATA: /var/lib/postgresql/data/pgdata
      POSTGRES_HOST_AUTH_METHOD: trust
    volumes:
      - postgres:/var/lib/postgresql/data
      - ./postgres/pg_hba.conf:/var/lib/postgres/data/pg_hba.conf
      - ./data/backup:/pgbackup
    restart: unless-stopped

volumes:
  postgres:

开发环境覆盖配置 docker-compose.dev.yml

version: '2.4'

services:
  backend:
    environment:
      LAPIS_ENV: development
    ports:
      - 8080:80

启动脚本

#!/usr/bin/env bash
docker compose -f docker-compose.yml -f docker-compose.dev.yml up

内容的提问来源于stack exchange,提问作者Karai17

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.27 20:24:10