Erstellen Sie mit Docker eine Python + uWSGI + Nginx-Umgebung

Erstellen Sie mit Doceker eine Überprüfungsumgebung für Webanwendungen, die mit Python 3.5 erstellt wurden

Ich habe selten Webanwendungen in Python geschrieben. Ich wollte es als Webanwendung vorbereiten, wenn ich den Betrieb nicht blockierender E / A überprüfe (unter Berücksichtigung der Vergleichsüberprüfung mit "node.js" und "Golang" usw.), daher war es zu dieser Zeit mit "Docker for Mac" einfach. Da die Umgebung gebaut wurde, wird sie als Memorandum bezeichnet. Ich habe einen Container für die Betriebsumgebung von Python3.5 + uWSGI + Nginx mit Docker Compose vorbereitet. Abgesehen davon scheint uWSGI allgemein als "wesugi" gelesen zu werden. Ich las es als "U Whisky".

Installieren Sie Docker für Mac

Ich habe "Docker für Mac" verwendet. Laden Sie Docker for Mac von hier herunter und installieren Sie es auf Ihrem Mac.

Vorbereitung der Docker Compose-Einstellungsdatei

Verzeichnisaufbau

Die folgende Abbildung zeigt die Verzeichnisstruktur dieses Mal.

スクリーンショット 2017-06-28 18.45.27.png

docker-compose.yml Es gibt nur einen Container. Nach dem Starten des Containers können Sie über die lokale Portnummer 8080 auf http zugreifen.

docker_python/docker-compose.yml


version: "2"
services:
  # nginx
  nginx-python:
    build: ./nginx-python
    ports:
      - "8080:80"
    volumes:
      - ./app/:/var/www/html/app/
    environment:
      TZ: "Asia/Tokyo"

Webserverkonfiguration

Installieren Sie Python3.5, uWSGI, Nginx unter CentOS.

Dockerfile Basierend auf CentOS 6.8.

docker_python/nginx-python/Dockerfile


FROM centos:6.8

ADD ./conf/nginx.repo /etc/yum.repos.d/

# nginx & python
RUN yum localinstall -y http://rpms.famillecollet.com/enterprise/remi-release-6.rpm
RUN yum install -y https://centos6.iuscommunity.org/ius-release.rpm
RUN yum install -y nginx-1.10.1
RUN yum install -y make gcc
RUN yum install -y libxml2-devel
RUN yum install -y python35u python35u-libs python35u-devel python35u-pip
RUN yum clean all

RUN ln -s /usr/bin/python3.5 /usr/bin/python3
RUN unlink /usr/bin/python
RUN ln -s /usr/bin/python3 /usr/bin/python
RUN ln -s /usr/bin/pip3.5 /usr/bin/pip

RUN pip install uwsgi

# setting nginx
COPY conf/nginx.conf /etc/nginx/nginx.conf
ADD conf/default.conf /etc/nginx/conf.d/default.conf
RUN usermod -u 1000 nginx

EXPOSE 80

ADD ./conf/start.sh /tmp/start.sh

CMD /bin/sh /tmp/start.sh

Zusätzliche Dateien

docker_python/nginx-python/conf/nginx.repo


[nginx]
name=nginx repo
baseurl=http://nginx.org/packages/centos/6/$basearch/
gpgcheck=0
enabled=1

docker_python/nginx-python/conf/nginx.conf


user  nginx;
worker_processes  1;

error_log  /var/log/nginx/error.log warn;
pid        /var/run/nginx.pid;


events {
    worker_connections  1024;
}


http {
    include       /etc/nginx/mime.types;
    default_type  application/octet-stream;

    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';

    access_log  /var/log/nginx/access.log  main;

    sendfile        off;
    #tcp_nopush     on;

    keepalive_timeout  65;

    #gzip  on;

    include /etc/nginx/conf.d/*.conf;
}

docker_python/nginx-python/conf/default.conf


server {
    listen 80 default;
    server_name _;

    location / {
        include uwsgi_params;
        uwsgi_pass localhost:8080;
    }

    location = /favicon.ico {
        empty_gif;
    }
}

docker_python/nginx-python/conf/start.sh


#!/bin/sh

/etc/init.d/nginx start
cd /var/www/html/app
chmod -R 777 .
uwsgi --ini uwsgi.ini

Anwendung

Bereiten Sie ein Verzeichnis für die Anwendung vor und platzieren Sie die Python-Datei und die uWSGI-Konfigurationsdatei. Wird montiert, wenn der Container startet. uwsgi.log und uwsgi.pid werden als leere Dateien vorbereitet (Befehl touch).

docker_python/app/webapp.py


def application(environ, start_response):
    start_response('200 OK', [('Content-Type','text/html')])
    return [b"Hello World"]

docker_python/app/uwsgi.ini


[uwsgi]
master = True
socket = localhost:8080
wsgi-file = webapp.py
stats = localhost:8181
logto = uwsgi.log
pidfile = uwsgi.pid

Erstellen Sie eine leere Datei.

$ touch docker_python/app/uwsgi.log
$ touch docker_python/app/uwsgi.pid

Bedienung des Containers

Erstellen und starten Sie einen Container

Wenn sowohl erstellt als auch gestartet wird (beginnen Sie im Hintergrund mit der Option -d):

$ docker-compose up --build

Nur zum Erstellen:

$ docker-compose build

Nur zum Booten (im Hintergrund mit der Option -d beginnen):

$ docker-compose up

Bestätigung der Container-ID

Wird ausgeführt, nachdem der Container-Build erfolgreich abgeschlossen wurde.

$ docker ps -a
CONTAINER ID        IMAGE                       COMMAND                  CREATED             STATUS                     PORTS                           NAMES
0be4855e99df        dockerpython_nginx-python   "/bin/sh -c '/bin/..."   2 hours ago         Up 2 hours                 0.0.0.0:8088->80/tcp            dockerpython_nginx-python_1

Container stoppen / starten

Geben Sie am Beispiel der obigen "Bestätigung der Container-ID" "0be4855e99df" für "CONTAINER_ID" an.

Beim Anhalten:

$ docker stop 0be4855e99df

So fangen Sie an:

$ docker start 0be4855e99df

Beim Neustart:

$ docker restart 0be4855e99df

Melden Sie sich beim laufenden Container an

Sie können den Container eingeben und den Status des Servers überprüfen.

$ docker exec -it 0be4855e99df bash

Container löschen

Kann gelöscht werden, wenn der Container gestoppt ist.

$docker rm 0be4855e99df

Demo

Wenn Sie den Container starten und mit einem Browser auf "http: // localhost: 8080" zugreifen, wird "Hello World" angezeigt.

Recommended Posts

Erstellen Sie mit Docker eine Python + uWSGI + Nginx-Umgebung
Erstellen Sie mit Docker eine Umgebung aus Nginx + uWSGI + Python (Django)
Bereiten Sie die Python3-Umgebung mit Docker vor
Erstellen Sie eine Django-Umgebung mit Docker-Compose (MariaDB + Nginx + uWSGI).
Erstellen Sie eine MySQL + Python-Umgebung mit Docker
Erstellen Sie mit VSCode & Docker Desktop eine einfache Python-Entwicklungsumgebung
Erstellen Sie mit Docker eine Jupyter Lab (Python) -Umgebung
[Python] Erstellen Sie mit Anaconda eine virtuelle Umgebung
Starten Sie die Umgebung mit LineBot + Heroku + Docker + Python
Erstellen Sie mit Docker eine Umgebung aus NGINX + NGINX Unit + MySQL
Nicht blockierend mit Python + uWSGI
Verwenden Sie Python mit Docker
Python-Umgebung mit Docker-Compose
Erstellen Sie eine Python-Umgebung
WebSocket mit Python + uWSGI
Virtuelle Umgebung mit Python 3.6
Bereiten Sie die Ausführungsumgebung von Python3 mit Docker vor
Erstellen Sie eine virtuelle Umgebung mit conda in Python
[Python] Erstellen Sie mit Docker eine Django-Entwicklungsumgebung
Erstellen Sie mit Sublime Text3 eine Python3-Build-Umgebung
Hallo Welt mit Nginx + Uwsgi + Python auf EC2
[Docker] Erstellen Sie in 3 Minuten eine jupyterLab (Python) -Umgebung!
Erstellen Sie mit pyenv unter Ubuntu 12.04 schnell eine Ausführungsumgebung für Python3.4 + Nginx + uWSGI + Flask-Webanwendungen
Aufbau einer virtuellen Umgebung mit Docker + Flask (Python) + Jupyter-Notebook
Erstellen Sie eine Umgebung mit virtualenv
Installieren Sie die Python-Umgebung mit Anaconda
Um Japanisch mit Python in der Docker-Umgebung verwenden zu können
Verwalten Sie die Python-Umgebung mit virtualenv
Erstellen Sie ein 3D-GIF mit Python3
API mit Flask + uWSGI + Nginx
Erstellen Sie eine Python-Entwicklungsumgebung mit Vagrant + Ansible + Fabric
Erstellen Sie eine Python3-Umgebung mit Ubuntu 16.04
Starten Sie mit Docker eine Python-Webanwendung auf Nginx + Gunicorn
Erstellen Sie mit direnv eine Python-Umgebung
Erstellen Sie in Docker eine Ebene für AWS Lambda Python
Erstellen Sie ein Verzeichnis mit Python
Erstellen Sie mit venv unter Ubuntu 14.04 LTS schnell eine Ausführungsumgebung für Python3.4 + Nginx + uWSGI + Flask-Webanwendungen
Erstellen Sie mit Docker eine Django-Entwicklungsumgebung! (Docker-compose / Django / postgreSQL / nginx)
Erstellen Sie mit Docker eine Umgebung für "Deep Learning von Grund auf neu"
Erstellen einer Todo-App mit Django ① Erstellen Sie eine Umgebung mit Docker
Erstellen Sie eine Plotanimation mit Python + Matplotlib
Beginnen Sie mit Python! ~ ① Umweltbau ~
Erstellen Sie Awaitable mit der Python / C-API
Richten Sie mit Homebrew eine moderne Python-Umgebung ein
Erstellen Sie eine Python-Umgebung auf dem Mac (2017/4)
Erstellen einer virtuellen Umgebung mit Python 3
Erstellen Sie eine Python-Umgebung in Centos
Python3-Umgebungskonstruktion mit pyenv-virtualenv (CentOS 7.3)
pytorch @ python3.8 Umgebungskonstruktion mit pipenv
Richten Sie mit Atom eine Python-Entwicklungsumgebung ein
Erstellen Sie die Entwicklungsumgebung von Django mit Docker neu! !! !! !!