Как мне объявить мои приложения SECRET_KEY в Docker. Локально все работает нормально, но не получается в моей капле Digital Ocean.
Код работает на Heroku без проблем. Это может быть потому, что я объявил переменные env непосредственно в Heroku.
Заранее спасибо
Вот ошибка:
decouple.UndefinedValueError: SECRET_KEY not found. Declare it as envvar or define a default value.
Вот мой docker -компонентный файл:
version: "3"
services:
db:
image: postgres
web:
build: .
expose:
- "8000"
command: sh -c "python manage.py collectstatic --no-input && python manage.py makemigrations && python manage.py migrate && waitress-serve --port=${PORT} myapp.wsgi:application"
environment:
- DB_NAME=postgres
- DB_USER=postgres
- DB_PASS=postgres
- DB_HOST=db
- DB_PORT=5432
- DEBUG=${DEBUG}
- SECRET_KEY=${SECRET_KEY}
- ALLOWED_HOSTS=${ALLOWED_HOSTS}
volumes:
- ./myapp:/myapp
ports:
- "8000:8000"
env_file:
- ./.env.prod
depends_on:
- db
nginx:
build: ./nginx
ports:
- 1337:80
depends_on:
- web
Вот мой Dockerfile:
FROM python:3.7-alpine
ENV PYTHONUNBUFFERED 1
ENV PYTHONDONTWRITEBYTECODE 1
COPY ./requirements.txt /requirements.txt
RUN pip install -r /requirements.txt
RUN apk update && apk add libpq
RUN apk add --virtual .build-deps gcc python3-dev musl-dev postgresql-dev
RUN pip install psycopg2
RUN apk del .build-deps
# copy entrypoint.sh
COPY ./entrypoint.sh /entrypoint.sh
COPY ./.env.prod /.env.prod
RUN mkdir /myapp
WORKDIR /myapp
COPY ./myapp /myapp
RUN adduser -D user
USER user
EXPOSE 8000
# run entrypoint.sh
ENTRYPOINT ["/entrypoint.sh"]
Вот моя точка входа. sh file:
#!/bin/sh
# Collect static files
echo "Collect static files"
python manage.py collectstatic --noinput
# Apply database migrations
echo "Apply database migrations"
python manage.py migrate
# Start server
echo "Starting server"
waitress-serve --port=$PORT myapp.wsgi:application
Все отлично работает локально