Django>=2.1.3,<2.2.0
djangorestframework>=3.9.0,<3.10.0
psycopg2>=2.7.5,<2.8.0
Pillow>=5.3.0,<5.4.0
uwsgi>=2.0.18,<2.1.0
flake8>=3.6.0,<3.7.0
boto3
와 django-storages
모듈을 추가한다.
Django>=2.1.3,<2.2.0
djangorestframework>=3.9.0,<3.10.0
psycopg2>=2.7.5,<2.8.0
Pillow>=5.3.0,<5.4.0
uwsgi>=2.0.18,<2.1.0
boto3>=1.12.0,<1.13.0
django-storages>=1.9.1,<1.10.0
flake8>=3.6.0,<3.7.0
S3_STORAGE_BACKEND = bool(int(os.environ.get('S3_STORAGE_BACKEND', 1)))
if S3_STORAGE_BACKEND is True:
DEFAULT_FILE_STORAGE = 'storages.backends.s3boto3.S3Boto3Storage'
AWS_DEFAULT_ACL = 'public-read'
AWS_STORAGE_BUCKET_NAME = os.environ.get('S3_STORAGE_BUCKET_NAME')
AWS_S3_REGION_NAME = os.environ.get('S3_STORAGE_BUCKET_REGION', 'us-east-1')
AWS_QUERYSTRING_AUTH = False
version: "3"
services:
app:
build:
context: .
ports:
- "8000:8000"
volumes:
- ./app:/app
command: >
sh -c "python manage.py wait_for_db &&
python manage.py migrate &&
python manage.py runserver 0.0.0.0:8000"
environment:
- DB_HOST=db
- DB_NAME=app
- DB_USER=postgres
- DB_PASS=supersecretpassword
- DEBUG=1
depends_on:
- db
db:
image: postgres:10-alpine
environment:
- POSTGRES_DB=app
- POSTGRES_USER=postgres
- POSTGRES_PASSWORD=supersecretpassword
- S3_STORAGE_BACKEND=0
위의 코드를 추가하여 다음과 같이 수정한다.
로컬환경에서 도커 컴포즈로 컨테이너들을 실행시킬때(또는 유닛테스트시),
환경변수를 셋팅하는 부분을 수정하는 것이다.
- S3_STORAGE_BACKEND
를 disable하는 것이다.
version: "3"
services:
app:
build:
context: .
ports:
- "8000:8000"
volumes:
- ./app:/app
command: >
sh -c "python manage.py wait_for_db &&
python manage.py migrate &&
python manage.py runserver 0.0.0.0:8000"
environment:
- DB_HOST=db
- DB_NAME=app
- DB_USER=postgres
- DB_PASS=supersecretpassword
- DEBUG=1
- S3_STORAGE_BACKEND=0
depends_on:
- db
db:
image: postgres:10-alpine
environment:
- POSTGRES_DB=app
- POSTGRES_USER=postgres
- POSTGRES_PASSWORD=supersecretpassword
유저를 생성하였다.
토큰을 발급받았다.
크롬 익스텐션 중 하나인 ModHeader
에 방금 전에 발급받은 토큰을 헤더에 넣는다.
filter 항목에는 api 엔드포인트/.*
를 추가해준다.
요리법을 포스팅하며 이미지도 함께 업로드해보자.
첨부파일에 이미지를 넣어준다.
구글 이미지에 간장계란밥 이미지를 다운받아 업로드하려고 한다.
업로드 된 이미지는 S3버킷에서도 확인할 수 있다.