docker-compose up --build
zum Laufen bringenversion: '3.7'
services:
app:
container_name: sample-app
image: sample-app
build:
context: ..
dockerfile: ./docker/python/Dockerfile
environment:
DB_HOST: sample-db
DB_PORT: 3306
volumes:
- sock:/var/run/uwsgi
- static:/var/www/app/sample/static
- ./log/python:/var/log/python
depends_on:
- db
networks:
- sample
server:
container_name: sample-server
image: nginx:1.17.3-alpine
ports:
- 8000:80
volumes:
- sock:/var/run/uwsgi
- static:/var/www/app/sample/static
- ./log/nginx:/var/log/nginx
- ./nginx/nginx.conf:/etc/nginx/nginx.conf
- ./nginx/conf.d:/etc/nginx/conf-sample.d
networks:
- sample
db:
container_name: sample-db
image: mysql:8.0.17
ports:
- 3316:3306
environment:
- MYSQL_ALLOW_EMPTY_PASSWORD=yes
- MYSQL_DATABASE=sample
- TZ=Asia/Tokyo
volumes:
- data:/var/lib/mysql
- ./mysql/conf.d/custom.cnf:/etc/mysql/conf.d/custom.cnf
networks:
- sample
volumes:
data:
driver: local
sock:
driver: local
static:
driver: local
networks:
sample:
FROM python:3.7.4-alpine3.9
RUN apk add --update --no-cache \
build-base \
linux-headers \
pcre pcre-dev \
libffi-dev \
openssl-dev \
mariadb-connector-c-dev \
mysql-client
RUN pip install --upgrade pip
RUN pip install \
certifi==2019.9.11 \
chardet==3.0.4 \
Click==7.0 \
Django==2.2.4 \
django-nested-admin==3.2.4 \
djangorestframework==3.10.2 \
idna==2.8 \
module==0.0.2 \
mysqlclient==1.4.4 \
python-monkey-business==1.0.0 \
pytz==2019.2 \
PyYaml==5.1 \
requests==2.22.0 \
six==1.12.0 \
sqlparse==0.3.0 \
urllib3==1.25.3 \
uwsgi
RUN apk add --update --no-cache tzdata \
&& cp /usr/share/zoneinfo/Asia/Tokyo /etc/localtime \
&& apk del tzdata
ENV APP_NAME=sample \
ROOT_DIR=/var/www/app \
SOCK_DIR=/var/run/uwsgi \
CONF_DIR=docker/python \
LOGS_DIR=/var/log/python \
UWSGI_CONF_DIR=/etc/uwsgi/vassals
RUN mkdir -p ${ROOT_DIR}/${APP_NAME} ${SOCK_DIR} ${LOGS_DIR}
WORKDIR ${ROOT_DIR}
COPY ./web ${APP_NAME}
COPY ./${CONF_DIR}/uwsgi/api.ini ${UWSGI_CONF_DIR}/api.ini
COPY ./${CONF_DIR}/startup.sh ./
VOLUME ["${ROOT_DIR}", "${SOCK_DIR}"]
CMD ["/bin/sh", "/var/www/app/startup.sh"]
#!/bin/sh
APP_DIR=/var/www/app/sample
${APP_DIR}/manage.py migrate
${APP_DIR}/manage.py loaddata user.yaml
uwsgi --ini /etc/uwsgi/vassals/api.ini
upstream api {
server unix:/var/run/uwsgi/uwsgi.sock;
}
server {
listen 80;
server_name localhost;
charset utf-8;
client_max_body_size 200M;
access_log /var/log/nginx/access.log main if=$log_ext if=$log_ua;
error_log /var/log/nginx/error.log;
add_header Access-Control-Allow-Methods "OPTIONS, GET, POST, PUT, PATCH, DELETE";
proxy_set_header 'Access-Control-Allow-Origin' '*';
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
proxy_read_timeout 180;
location / {
try_files $uri @uwsgi;
}
# static
location /static/ {
root /var/www/app/sample;
}
location @uwsgi {
include uwsgi_params;
uwsgi_pass api;
}
}
user root;
worker_processes 1;
error_log /var/log/nginx/error.log;
pid /var/run/nginx.pid;
events {
worker_connections 1024;
}
http {
server_tokens off;
include /etc/nginx/mime.types;
include /etc/nginx/conf-sample.d/*.conf;
default_type application/octet-stream;
access_log /var/log/nginx/access.log main if=$log_ua;
sendfile on;
#tcp_nopush on;
#keepalive_timeout 0;
keepalive_timeout 120;
#gzip on;
index index.html index.htm;
}
.
├── README.md
├── batch
├── deploy
├── docker
│ ├── docker-compose.yml
│ ├── log
│ │ ├── nginx
│ │ │ ├── access.log
│ │ │ └── error.log
│ │ └── python
│ │ ├── error.log
│ │ └── request.log
│ ├── mysql
│ │ └── conf.d
│ │ └── custom.cnf
│ ├── nginx
│ │ ├── conf.d
│ │ │ ├── 00-log.conf
│ │ │ └── api.conf
│ │ └── nginx.conf
│ └── python
│ ├── Dockerfile
│ ├── startup.sh
│ └── uwsgi
│ └── api.ini
├── pip.list
├── venv
└── web
├── README.md
├── apps
│ ├── __init__.py
│ ├── api
│ │ ├── __init__.py
│ │ ├── apps.py
│ │ ├── urls.py
│ │ └── versioned
│ │ ├── __init__.py
│ │ └── v1
│ │ ├── __init__.py
│ │ ├── permissions
│ │ ├── serializers
│ │ ├── urls.py
│ │ ├── views
│ │ └── viewsets
│ ├── base
│ │ ├── __init__.py
│ │ ├── apps.py
│ │ ├── fixtures
│ │ ├── migrations
│ │ └── models
│ └── console
│ ├── __init__.py
│ ├── admin
│ └── apps.py
├── config
│ ├── __init__.py
│ ├── settings.py
│ ├── urls.py
│ └── wsgi.py
├── locale
├── manage.py
└── static
Tatsächlich wird die Konfiguration auf der Django-Seite auch auf verschiedene Arten angepasst. (API-Versionsverwaltung usw.) Ich dachte daran, verschiedene Dinge gleichzeitig zu schreiben, aber ich bin faul und schreibe überhaupt nicht Vorerst habe ich einen Artikel über Docker geschrieben. .. ..
Wenn eine Stimme sagt "Ich möchte die Beschreibung (Einstellung) hier sehen", kann ich sie gerne ausschreiben
Recommended Posts