Nous allons créer un environnement de développement pour Django et postgreSQL en utilisant Docker et Docker-compose. Appuyez sur http: // localhost: 8000 jusqu'à ce que l'écran ci-dessous s'affiche.

Si vous avez déjà Django, vous n'êtes pas obligé.
pip install Django
Installez Docker depuis ici
** Vérifier la version **
$ docker --version
Docker version 18.09.2
Installez Docker-compose avec la commande suivante.
$ curl -L https://github.com/docker/compose/releases/download/1.24.0/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose
$ chmod +x /usr/local/bin/docker-compose
** Vérifier la version **
$ docker-compose --version
docker-compose version 1.23.2
$ mkdir docker-demo-with-django && cd docker-demo-with-django
$ mkdir app && cd app
$ vi Pipfile
/app/Pipfile
[[source]]
name = "pypi"
url = "https://pypi.org/simple"
verify_ssl = true
[dev-packages]
[packages]
Django = "==3.1"
[requires]
python_version = "3.7.5"
Utilisez la commande suivante pour tout exécuter, de l'installation à la connexion.
$ pip install pipenv
$ pipenv install
$ pipenv shell
Utilisez la commande suivante pour démarrer le projet et démarrer le serveur.
$ django-admin.py startproject django_demo .
$ python manage.py migrate
$ python manage.py runserver
De là, nous allons configurer le conteneur Docker.
Dockerfile
Créer un Dockerfile
$ vi Dockerfile
app/Dockerfile
#Python3 de l'officiel.7 sur l'image linux alpine pull
FROM python:3.7-alpine
#Définir le répertoire de travail
WORKDIR /usr/src/app
#Définir les variables d'environnement
#Empêcher Python d'écrire sur des fichiers et des disques pyc
ENV PYTHONDONTWRITEBYTECODE 1
#Empêcher Python de mettre en mémoire tampon les E / S standard
ENV PYTHONUNBUFFERED 1
#Installation de psycopg2
RUN apk update \
    && apk add --virtual build-deps gcc python3-dev musl-dev \
    && apk add postgresql-dev \
    && pip install psycopg2 \
    && apk del build-deps
#Installez Pipenv
RUN pip install --upgrade pip \
&& pip install pipenv
#Copiez le fichier pip de l'hôte dans le répertoire de travail du conteneur
COPY ./Pipfile /usr/src/app/Pipfile
#Construire un environnement Django en installant des packages à partir de pipfile
RUN pipenv install --skip-lock --system --dev
#Copiez le répertoire actuel de l'hôte (actuellement le répertoire de l'application) dans votre répertoire de travail
COPY . /usr/src/app/
# entrypoint.courir sh
ENTRYPOINT ["/usr/src/app/entrypoint.sh"]                 
vi ./../docker-compose.yml
docker-demo-with-django/docker-compose.yml
version: '3.7'
services:
    #Le nom du service peut être défini librement
    django:
        #Depuis le répertoire de l'application`Dockerfile`Trouver
        build: ./app
        #Définissez la commande à saisir après le démarrage du service
        command: python manage.py runserver 0.0.0.0:8000
        #Paramètres des données persistantes.`host:container`Décrivez le chemin avec
        volumes:
            - ./app/:/usr/src/app/
        #Spécifiez le port à ouvrir.`host:container`Listez le port dans
        ports:
            - 8000:8000
        #Spécifiez la variable d'environnement
        environment:
            #1 est le mode de retour
            - DEBUG=1
            - SECRET_KEY=hoge
            - DATABASE_ENGINE=django.db.backends.postgresql
            - DATABASE_DB=django_db
            - DATABASE_USER=django_db_user
            - DATABASE_PASSWORD=password1234
            - DATABASE_HOST=postgres
            - DATABASE_PORT=5432
        #Spécifiez le service à connecter
        depends_on:
            - postgres
    postgres:
        #Tirez l'image du fonctionnaire
        image: postgres:11.4-alpine
        #Persistance de la base de données
        #Au début pour ne pas monter dans le répertoire hôte`./`N'attachez pas
        volumes:
            - postgres_data:/var/lib/postgresql/data
        #Créer une base de données avec les privilèges su et le même nom que l'utilisateur spécifié
        #Entrez la valeur de la même manière que celle spécifiée dans le service django
        environment:
            - POSTGRES_USER=django_db_user
            - POSTGRES_PASSWORD=password1234
            - POSTGRES_DB=django_db
#Les "volumes nommés" écrits au niveau supérieur peuvent être référencés à partir de plusieurs services
volumes:
    postgres_data:         
#!/bin/sh
if [ "$DATABASE" = "postgres" ]
then
    echo "Waiting for postgres..."
    while ! nc -z $DATABASE_HOST $DATABASE_PORT; do
      sleep 0.1
    done
    echo "PostgreSQL started"
fi
python manage.py flush --no-input
python manage.py migrate
exec "$@"
$ docker-compose up -d --build
Connectez-vous à l'URL suivante, et si vous pouvez vous connecter, la construction est terminée http://localhost:8000
Recommended Posts