首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何使用Docker为开发和生产设置单独的.env

如何使用Docker为开发和生产设置单独的.env
EN

Stack Overflow用户
提问于 2019-09-10 06:51:55
回答 2查看 1.7K关注 0票数 0

来自一个环境,在这个环境中,我手动地对远程服务器执行ssh操作,执行git操作并创建我的.env(因为它是gitignored的),我如何将开发.env和生产.env分开。我使用坞机来创建一个AWS EC2实例。我创建了一个production.yml并做了docker-compose -f production.yml up -d。EC2机器中的容器获取了我的开发.env,这不是我想要的。

Dockerfile

代码语言:javascript
运行
复制
FROM python:3.6-alpine
ENV PYTHONUNBUFFERED 1

RUN apk update && apk add postgresql-dev gcc python3-dev musl-dev git jpeg-dev zlib-dev libmagic
RUN python -m pip install --upgrade pip

RUN mkdir /writer-api
COPY requirements.txt /writer-api/
RUN pip install --no-cache-dir -r /writer-api/requirements.txt
COPY . /writer-api/
WORKDIR /writer-api

production.yml

代码语言:javascript
运行
复制
version: "3"
services:
  postgres:
    restart: always
    image: postgres
    ports:
      - "5432:5432"
    volumes:
      - pgdata:/var/lib/postgresql/data/
  web:
    restart: always
    build: .
    command: gunicorn writer.wsgi:application -w 2 -b :8000
    environment:
      DEBUG: ${DEBUG}
      SECRET_KEY: ${SECRET_KEY}
      DB_HOST: ${DB_HOST}
      DB_NAME: ${DB_NAME}
      DB_USER: ${DB_USER}
      DB_PORT: ${DB_PORT}
      DB_PASSWORD: ${DB_PASSWORD}
      SENDGRID_API_KEY: ${SENDGRID_API_KEY}
      AWS_ACCESS_KEY_ID: ${AWS_ACCESS_KEY_ID}
      AWS_SECRET_ACCESS_KEY: ${AWS_SECRET_ACCESS_KEY}
      AWS_STORAGE_BUCKET_NAME: ${AWS_STORAGE_BUCKET_NAME}
    depends_on:
      - postgres
      - redis
    expose:
      - "8000"
  redis:
    restart: always
    image: "redis:alpine"
  celery:
    restart: always
    build: .
    command: celery -A writer worker -l info
    volumes:
      - .:/writer-api
    depends_on:
      - postgres
      - redis
  celery-beat:
    restart: always
    build: .
    command: celery -A writer beat -l info
    volumes:
      - .:/writer-api
    depends_on:
      - postgres
      - redis
  nginx:
    restart: always
    build: ./nginx/
    ports:
      - "80:80"
    depends_on:
      - web
volumes:
  pgdata:
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-09-10 06:56:29

在单独的文件夹中设置productiondev.env文件,并将.env文件放在这些文件夹中

票数 0
EN

Stack Overflow用户

发布于 2019-09-10 07:08:56

我想您可以导出环境shell变量&然后按照环境使用.env。在工作区中创建一个dev.env & prod.env文件。

样本组成-

代码语言:javascript
运行
复制
version: '3'

services:
  nginx:
    image: nginx
    ports:
      - '80'
    env_file:
      - ${ENVIRON}.env

为DEV建造-

代码语言:javascript
运行
复制
export ENVIRON=dev
docker-compose up -d 

为刺激而建-

代码语言:javascript
运行
复制
export ENVIRON=prod
docker-compose up -d 

这样,您就能够为DEV & PROD环境利用相同的组合文件。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57865444

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档