Docker ft..env 不合作

问题描述 投票:0回答:1

我正在开发一个动态 DockerFile,它可以与 .env 文档进行通信。我创建这个是为了为我的开发团队提供良好的本地环境。他们使用 Docker Desktop 并使用 Docker-Compose、DockerFile 和 .env 配置创建 Docker 开发环境。

只有当我在 Docker Desktop 应用程序中运行它时,一切似乎都很好,它仅在依赖于 .env 文档时停止在 DockerFile 内部的部分。

DockerFile 顶部部分:

# Use a dummy base image
FROM alpine:latest AS dummy

# Define base image
# LANGUAGE: Programming language to use for development (Default: php)
ARG LANGUAGE

# LANGUAGE_VERSION: Language version
ARG LANGUAGE_VERSION

# WEB_SERVER: Web server
ARG WEB_SERVER

# Import environment variables from docker-compose-dev.env
ENV LANGUAGE=$LANGUAGE \
    LANGUAGE_VERSION=$LANGUAGE_VERSION \
    WEB_SERVER=$WEB_SERVER

# Define base image
FROM ${LANGUAGE}:${LANGUAGE_VERSION}-${WEB_SERVER}

RUN if [ -z "${LANGUAGE}" ]; then \
        echo "Error: LANGUAGE argument is missing"; \
        exit 1; \
    fi

# Install required packages and dependencies

我的 .env 示例:

# --------------------------------------------------------
#           Docker Compose Configuration
# --------------------------------------------------------

# Programming Language Configuration
# --------------------------------------------------------
# Programming language to use for development
# Options: php, flutter
# Default: php
LANGUAGE=php
# e.g.

我的 Docker-Compose 示例:

version: '3.8'

services:
  web:
    env_file:
      - .env
    stdin_open: true
    tty: true
    build:
      context: .
      dockerfile: Dockerfile
    ports:
      - ${WEB_SERVER_PORT}:${WEB_SERVER_PORT}
    volumes:
      - ${APP_SOURCE_CODE_PATH}:${CONTAINER_WORKDIR}
    environment:
      - APP_ENV=${APP_ENV}
    networks:
        - mynetwork
    init: true

关于参数,有些部分缺失,但我只与大家分享示例,而不是完整的参数列表。

非常感谢!

docker docker-compose dockerfile
1个回答
0
投票

我找到了解决方案。我需要在 docker compose 中呈现环境和参数,并且只使用 .env,否则 docker compose 不会看到它。

© www.soinside.com 2019 - 2024. All rights reserved.