Elastic Beanstalk에 Nginx-uWSGI-Django로 구성된 Docker 이미지를 배포합니다.
- Python (3.6)
- .secrets/의 JSON파일 작성 (아래의 .secrets항목 참조)
- (선택사항) Docker로 실행할 경우, Docker설치 필요
- Python (3.6)
- S3 Bucket, 해당 Bucket을 사용할 수 있는 IAM User의 AWS AccessKey, SecretAccessKey
- RDS Database(보안 그룹 허용 필요), 해당 Database를 사용할 수 있는 RDS의 User, Password
pip install -r .requirements/dev.txt
python manage.py runserver
export DJANGO_SETTINGS_MODULE=config.settings.dev
pip install -r .requirements/dev.txt
python manage.py runserver
export DJANGO_SETTINGS_MODULE=config.settings.production
pip install -r .requirements/dev.txt
python manage.py runserver
localhost:8000
에서 확인
docker build -t eb-docker:local -f Dockerfile.local
docker run --rm -it 8000:80 eb-docker:local
docker build -t eb-docker:dev -f Dockerfile.dev
docker run --rm -it 8000:80 eb-docker:dev
docker build -t eb-docker:production -f Dockerfile.production
docker run --rm -it 8000:80 eb-docker:production
apt, pip관련 내용을 미리 빌드해서 DockerHub 저장소에 업로드
docker build -t eb-docker:base -f Dockerfile.base
docker tag eb-docker:base <자신의 사용자명>/<저장소명>:base
docker push <사용자명>/<저장소명>:base
이후 ElasticBeanstalk을 사용한 배포 시, 해당 이미지를 사용
FROM <사용자명/<저장소명>:base
...
...
.deploy.sh
파일을 사용
./deploy.sh
{
"SECRET_KEY": "<Django secret key>",
"RAVEN_CONFIG": {
"dsn": "https://<Sentry secret key>@sentry.io/300780",
"release": "raven.fetch_git_sha(os.path.abspath(os.pardir))"
},
"SUPERUSER_USERNAME": "<Default superuser username>",
"SUPERUSER_PASSWORD": "<Default superuser password>",
"SUPERUSER_EMAIL": "<Default superuser email>",
"AWS_ACCESS_KEY_ID": "<AWS access key (Permission: S3)>",
"AWS_SECRET_ACCESS_KEY": "<AWS secret access key>",
"AWS_STORAGE_BUCKET_NAME": "<AWS S3 Bucket name>",
"AWS_S3_REGION_NAME": "<AWS Bucket region",
"AWS_S3_SIGNATURE_VERSION": "s3v4",
"AWS_DEFAULT_ACL": "private"
}
{
"DATABASES": {
"default": {
"ENGINE": "django.db.backends.postgresql",
"HOST": "<AWS RDS end-point>",
"NAME": "<DB name>",
"USER": "<DB username>",
"PASSWORD": "<DB user password",
"PORT": 5432
}
}
}