[가상환경 구성]
python3 -m venv django_venv 로 가상환경 구성
source django_venv/bin/activate (가상환경 실행)
deactivate
[구성 라이브러리 *라이브러리 충돌 주의*]
Django==3.0.5
djongo==1.3.3
gunicorn==20.1.0
mongoengine==0.23.1
pymongo==3.12.3
sqlparse==0.2.4
[cmd]
docker pull mongo
docker run --name mongodb-container -v ~/data:/data/db -d -p 27017:27017 mongo
[cmd - mongo 접속]
docker exec -it mongodb-container bash
[컨테이너 내부]
root@073c229db4e5:/# mongo
[settings.py]
#<> 부분 수정
DATABASES = {
'default': {
'ENGINE': 'djongo',
'ENFORCE_SCHEMA': True,
'LOGGING': {
'version': 1,
'loggers': {
'djongo': {
'level': 'DEBUG',
'propogate': False,
}
},
},
'NAME': <'db이름'>,
'CLIENT': {
'host': '127.0.0.1',
'port': 27017,
'username': <'Mongo_id'>,
'password': <'Mongo_pass'>,
'authSource': 'admin',
'authMechanism': 'SCRAM-SHA-1',
}
}
}
[Models.py]
from djongo import models
class User(models.Model):
_id = models.ObjectIdField()
username = models.CharField(max_length=100)
email = models.EmailField(max_length=100)
password = models.CharField(max_length=50)
class Meta:
db_table = 'user'
makemigrations / migration / showmigration /sqlmigrate
따로정리
[gunicorn-cfg.py]
-*- encoding: utf-8 -*-
bind = '0.0.0.0:5005'
workers = 1
accesslog = '-'
loglevel = 'debug'
capture_output = True
enable_stdio_inheritance = True
[wsgi.py]
-*- encoding: utf-8 -*-
import os
from django.core.wsgi import get_wsgi_application
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'core.settings')
application = get_wsgi_application()
gunicorn --config gunicorn-cfg.py core.wsgi --reload
[cmd]
docker-compose up --build
[yaml]
version: '3.8'
services:
<app_name>:
container_name: <container_app_name>
restart: always
env_file: .env
build: .
networks:
- db_network
- web_network
nginx:
container_name: nginx
restart: always
image: "nginx:latest"
ports:
- "85:85"
volumes:
- ./nginx:/etc/nginx/conf.d
networks:
- web_network
depends_on:
- <app_name>
networks:
db_network:
driver: bridge
web_network:
driver: bridge
[nginx.conf]
upstream webapp {
server <app_name>:5005;
}
server {
listen 85;
server_name localhost;
location / {
proxy_pass http://webapp;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}