来自一个环境,在这个环境中,我手动地对远程服务器执行ssh操作,执行git操作并创建我的.env(因为它是gitignored的),我如何将开发.env和生产.env分开。我使用坞机来创建一个AWS EC2实例。我创建了一个production.yml并做了docker-compose -f production.yml up -d。EC2机器中的容器获取了我的开发.env,这不是我想要的。
Dockerfile
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-apiproduction.yml
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:发布于 2019-09-10 06:56:29
在单独的文件夹中设置production和dev的.env文件,并将.env文件放在这些文件夹中
发布于 2019-09-10 07:08:56
我想您可以导出环境shell变量&然后按照环境使用.env。在工作区中创建一个dev.env & prod.env文件。
样本组成-
version: '3'
services:
nginx:
image: nginx
ports:
- '80'
env_file:
- ${ENVIRON}.env为DEV建造-
export ENVIRON=dev
docker-compose up -d 为刺激而建-
export ENVIRON=prod
docker-compose up -d 这样,您就能够为DEV & PROD环境利用相同的组合文件。
https://stackoverflow.com/questions/57865444
复制相似问题