首页 > 解决方案 > 如何在 React 的 Docker-Compose 中配置 .env 文件?

问题描述

我已经.env在 docker ignore 中添加了,并且在构建图像后环境变量未定义,那么如何在docker-compose.yml文件中配置这些环境变量

我们是否也应该docker-compose.yml忽略?

码头工人-compose.yml

version: '3'
services: 
    client:
        build: 
            context: .
            dockerfile: Dockerfile.dev
        command: npm start
        container_name: testReact
        ports:
            - "3000:3000"        
        volumes: 
            - ./:/app
            - /app/node_modules

.env

REACT_APP_CONSTANT = 'MY REACT APP'

.dockerignore

/node_modules
/build
.git
*.md
.gitignore
.env

标签: reactjsdockerdocker-composeenvironment-variablesdockerignore

解决方案


这里的问题是您在使用该.env文件时没有在 docker-compose.yml 中声明变量。

.env是特殊的,如果没有在env_file小节中声明,它用于替换 docker-compose.yml 中的变量(查看文档以获取更多信息)。

解决方案是添加和environment分段。例如

version: '3'
services: 
    client:
        build: 
            context: .
            dockerfile: Dockerfile.dev
        command: npm start
        container_name: testReact
        ports:
            - "3000:3000"        
        volumes: 
            - ./:/app
            - /app/node_modules
        environment:
            - REACT_APP_CONSTANT

注意:您也可以在environment小节中使用对象表示法。这有助于定义默认值。例如:

        environment:
            REACT_APP_CONSTANT: ${REACT_APP_CONSTANT:-'another default'}

.env编辑:顺便说一句,从文件中删除空格。


推荐阅读