Skip to content

Commit

Permalink
[update] docker-compose
Browse files Browse the repository at this point in the history
rkun123 committed Jul 3, 2021
1 parent 7d5dfd1 commit 259cb19
Showing 9 changed files with 236 additions and 11 deletions.
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -3,3 +3,4 @@ db.sqlite3
local_settings.py
__pycache__/
/server/media/images/system/*
/server/staticfiles
15 changes: 15 additions & 0 deletions Dockerfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
FROM python:3.9.6-alpine

RUN mkdir /app

WORKDIR /app

COPY . /app

RUN apk add gcc musl-dev g++ zlib-dev jpeg-dev libjpeg postgresql-libs postgresql-dev

RUN pip install pipenv

RUN pipenv install

RUN pip install uvicorn
5 changes: 3 additions & 2 deletions Pipfile
Original file line number Diff line number Diff line change
@@ -4,7 +4,7 @@ verify_ssl = true
name = "pypi"

[packages]
asgiref = "==3.2.10"
asgiref = "==3.4.1"
astroid = "==2.4.2"
boto3 = "==1.14.20"
botocore = "==1.17.20"
@@ -43,11 +43,12 @@ toml = "==0.10.1"
urllib3 = "==1.25.9"
whitenoise = "==5.1.0"
wrapt = "==1.12.1"
Django = "==3.0.7"
Django = "==3.2.5"
Pillow = "==7.2.0"
djangorestframework = "*"
django-cors-headers = "*"
drf-nested-routers = "*"
uvicorn = "*"

[dev-packages]

38 changes: 31 additions & 7 deletions Pipfile.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

28 changes: 28 additions & 0 deletions docker-compose.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
version: '3'
services:
api:
build: .
working_dir: /app/server
command: ['pipenv', 'run', 'gunicorn', 'server.asgi:application', '-k', 'uvicorn.workers.UvicornWorker', '-b', '0.0.0.0:8000', '--capture-output']
volumes:
- .:/app
depends_on:
- db
environment:
- DATABASE_URL=postgres://root:root@db:5432/api
- DJANGO_SETTINGS_MODULE=server.settings.docker_production
- SECRET_KEY=hogefuga
- LANG=ja_JP.utf8
- LC_ALL=ja_JP.utf8
ports:
- "8000:8000"
db:
image: postgres
volumes:
- ./postgres/init:/docker-entrypoint-initdb.d
- ./postgres/data:/var/lib/postgresql/data
environment:
POSTGRES_USER: root
POSTGRES_PASSWORD: root
POSTGRES_DB: api
POSTGRES_INITDB_ARGS: "--encoding=UTF-8"
26 changes: 26 additions & 0 deletions server/server/settings/base.py
Original file line number Diff line number Diff line change
@@ -69,6 +69,32 @@
},
]

LOGGING={
'version': 1,
'disable_existing_loggers': False,
'formatters': {
'production': {
'format': '%(asctime)s [%(levelname)s] %(process)d %(thread)d '
'%(pathname)s:%(lineno)d %(message)s'
},
},
'handlers': {
'file': {
'class': 'logging.FileHandler',
'filename': 'logs/django.log',
'formatter': 'production',
'level': 'INFO'
}
},
'loggers': {
'django': {
'handlers': ['file'],
'level': 'INFO',
'propagate': False
}
}
}

WSGI_APPLICATION = 'server.wsgi.application'


62 changes: 62 additions & 0 deletions server/server/settings/docker_development.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,62 @@
"""
Django settings for server project.
Generated by 'django-admin startproject' using Django 3.0.6.
For more information on this file, see
https://docs.djangoproject.com/en/3.0/topics/settings/
For the full list of settings and their values, see
https://docs.djangoproject.com/en/3.0/ref/settings/
"""

import os
import dj_database_url
from .base import *

# Quick-start development settings - unsuitable for production
# See https://docs.djangoproject.com/en/3.0/howto/deployment/checklist/

# SECURITY WARNING: keep the secret key used in production secret!
SECRET_KEY = os.environ['SECRET_KEY']

# SECURITY WARNING: don't run with debug turned on in production!
if os.getenv("DEBUG", "False") == "False":
DEBUG = False

ALLOWED_HOSTS = ["*"]


# Application definition


ROOT_URLCONF = 'server.urls'

WSGI_APPLICATION = 'server.wsgi.application'


# Database
# https://docs.djangoproject.com/en/3.0/ref/settings/#databases

DATABASES = {
'default': dj_database_url.config()
}


# Password validation
# https://docs.djangoproject.com/en/3.0/ref/settings/#auth-password-validators

AUTH_PASSWORD_VALIDATORS = [
{
'NAME': 'django.contrib.auth.password_validation.UserAttributeSimilarityValidator',
},
{
'NAME': 'django.contrib.auth.password_validation.MinimumLengthValidator',
},
{
'NAME': 'django.contrib.auth.password_validation.CommonPasswordValidator',
},
{
'NAME': 'django.contrib.auth.password_validation.NumericPasswordValidator',
},
]
62 changes: 62 additions & 0 deletions server/server/settings/docker_production.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,62 @@
"""
Django settings for server project.
Generated by 'django-admin startproject' using Django 3.0.6.
For more information on this file, see
https://docs.djangoproject.com/en/3.0/topics/settings/
For the full list of settings and their values, see
https://docs.djangoproject.com/en/3.0/ref/settings/
"""

import os
import dj_database_url
from .base import *

# Quick-start development settings - unsuitable for production
# See https://docs.djangoproject.com/en/3.0/howto/deployment/checklist/

# SECURITY WARNING: keep the secret key used in production secret!
SECRET_KEY = os.environ['SECRET_KEY']

# SECURITY WARNING: don't run with debug turned on in production!
if os.getenv("DEBUG", "False") == "False":
DEBUG = False

ALLOWED_HOSTS = ["*"]


# Application definition


ROOT_URLCONF = 'server.urls'

WSGI_APPLICATION = 'server.wsgi.application'


# Database
# https://docs.djangoproject.com/en/3.0/ref/settings/#databases

DATABASES = {
'default': dj_database_url.config()
}


# Password validation
# https://docs.djangoproject.com/en/3.0/ref/settings/#auth-password-validators

AUTH_PASSWORD_VALIDATORS = [
{
'NAME': 'django.contrib.auth.password_validation.UserAttributeSimilarityValidator',
},
{
'NAME': 'django.contrib.auth.password_validation.MinimumLengthValidator',
},
{
'NAME': 'django.contrib.auth.password_validation.CommonPasswordValidator',
},
{
'NAME': 'django.contrib.auth.password_validation.NumericPasswordValidator',
},
]
10 changes: 8 additions & 2 deletions server/works/serializer.py
Original file line number Diff line number Diff line change
@@ -2,7 +2,7 @@
from django.core import serializers
from django.db.models.base import Model
from rest_framework import serializers
from .models import Genre, Work, Comment
from .models import Genre, Tag, Work, Comment
from datetime import datetime

class GenreSerializer(serializers.ModelSerializer):
@@ -12,12 +12,18 @@ class Meta:
fields = ['id', 'works', 'title', 'bg_color']
depth = 2

class TagSerializer(serializers.ModelSerializer):

class Meta:
model = Tag
fields = ['id', 'name', 'color']

class WorkSerializer(serializers.ModelSerializer):
# genre = GenreSerializer()

class Meta:
model = Work
fields=['id', 'title', 'description', 'genre', 'team', 'type_choice', 'goods', 'comments']
fields=['id', 'title', 'description', 'genre', 'team', 'type_choice', 'goods', 'comments', 'tags']
depth = 1

class CommentSerializer(serializers.ModelSerializer):

0 comments on commit 259cb19

Please sign in to comment.