nginx+uwsgi環境をDockerで構築

Webサーバをnginx、Pythonをuwsgiで実行し、それらをDocker-composeで環境構築する

ディレクトリ構成

apps
– docker-compose.yml *
– docker
– web
– default.conf *
– app
– Dockerfile *
– conf
– uwsgi.ini *
– public
– index.py
# docker-compose.yml
version: "3"
services:
  web: 
    image: nginx:1.15.6
    ports:
      - "8000:80"
    depends_on: 
      - app
    volumes:
      - ./docker/web/default.conf:/etc/nginx/conf.d/default.conf
      - .:/var/www/html
    links:
      - app
  app:
    build: ./docker/app
    volumes: 
      - ./public:/var/www/html
      - ./docker/app/conf/uwsgi.ini:/etc/uwsgi/uwsgi.ini
# ./docker/app/Dockerfile
# python のイメージを取得し、uwsgiのインストールと実行
FROM python:latest

RUN pip install -U pip \
&& pip install uwsgi
CMD ["uwsgi", "--ini", "/etc/uwsgi/uwsgi.ini"]
; ./docker/app/conf/uwsgi.ini
; socketをappサーバの3031番。wsgi-fileをpublic配下にする
[uwsgi]
master = true
; enable-threads = true
socket = app:3031
chmod-socket = 666
wsgi-file = /var/www/html/index.py
pidfile = /etc/uwsgi/uwsgi.pid
logto = /etc/uwsgi/uwsgi.log
# ./docker/web/default.conf
upstream app {
    server app:3031;
}

server {
    listen 80;
    server_name  dev.com;

    access_log /var/log/nginx/access.log;
    error_log /var/log/nginx/error.log;

    location / {
        include uwsgi_params;
        uwsgi_pass app;
    }
}

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です