Nous avons créé un docker-compose qui peut être utilisé même pour des projets qui ont déjà été créés, nous allons donc résumer les spécifications dans un article.
** Comment utiliser est écrit sur GitHub, alors s'il vous plaît → GitHub **
(Si vous modifiez la base de données de la sqlite par défaut, vous aurez besoin d'un autre paramètre ... désolé)
L'environnement de déploiement est Django + Nginx + Gunicorn.
Veuillez consulter le README sur GitHub, qui contient un lien ci-dessus, pour savoir comment l'utiliser.
Pour faciliter le déploiement, j'ai créé un déploiement docker-compose pour Django qui fonctionne avec la structure de répertoires suivante.
django-nginx-gunicorn-docker/
├ nginx/
│ └ project.conf
├ django/
│ ├ Dockerfile
│ ├ requirements.txt
│ └ [DJANGOPROJECT]
│ ├ manage.py
│ ├ …
│ └ [PROJECTNAME]
└ docker-compose.yml
Montez le projet entier dans un conteneur et exécutez-le. Regardons maintenant le fichier de paramètres.
docker-compose Les conteneurs utilisés sont ceux des applications Django (Gunicorn fonctionne également dans ce cas) et les conteneurs Nginx qui agissent comme proxy inverse.
docker-compose.yml
version: '3'
services:
django:
build: ./django
expose:
- "8000"
networks:
- nginx_network
volumes:
- ./django:/code
hostname: django-server
restart: always
nginx:
image: nginx
ports:
- "80:80"
networks:
- nginx_network
depends_on:
- django
volumes:
- ./nginx/project.conf:/etc/nginx/conf.d/default.conf
restart: always
networks:
nginx_network:
driver: bridge
L'environnement du projet est monté dans les volumes de django. Même si vous modifiez après le démarrage du conteneur, cela sera reflété par le redémarrage du conteneur.
De plus, comme le conteneur nginx effectue une redirection de port à 80:80, il sera remis au conteneur nginx lorsque l'accès viendra au port 80 de l'hôte local.
Je n'ai rien fait de particulièrement délicat, donc l'explication de la composition est terminée.
Dockerfile Une description du Dockerfile dans le répertoire django.
FROM python:3
ENV PYTHONUNBUFFERED 1
RUN mkdir /code
WORKDIR /code
COPY requirements.txt /code/
RUN pip install -r requirements.txt
COPY . /code/
WORKDIR /code/MYPROJECT
CMD ["gunicorn", "--bind", "0.0.0.0:8000", "MYPROJECT.wsgi:application"]
Utilisez l'image de la série python3. Je télécharge Django et Gunicorn dans RUN sur la ligne 6. (J'ai également téléchargé la bibliothèque pour Postgres, mais je ne l'utilise pas. Je suis désolé.)
requirements.txt
Django==2.2.7
gunicorn==19.9.0
psycopg2
Au fait, c'est une version de Django, mais quand j'ai initialement spécifié 2.0 et donné à Github, je me suis mis en colère. (De nombreux avertissements de sécurité sont venus. J'ai également reçu une demande d'extraction en colère du Bot sur GitHub.)
project.conf Il s'agit du fichier de configuration nginx.
project.conf
upstream django {
server django:8000;
}
server {
listen 80;
server_name :localhost;
location / {
proxy_pass http://django;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
proxy_redirect off;
proxy_set_header X-Forwarded-Proto $scheme;
}
}
Spécifiez la destination de la demande en amont. La destination est l'hôte local du conteneur. En outre, celui nommé ici est utilisé dans le paramètre de chemin du proxy.
Côté serveur, le port d'écoute et le proxy sont définis.
Je suis resté coincé dans les paramètres du port. .. .. Tout le monde devrait être prudent ;;
Recommended Posts