Hay muchos artículos irrelevantes en Internet, así que preparé esta publicación. Básicamente, al escribir el artículo, me basé en el ejemplo de configuración de Docker para django en la documentación de Docker.
Aquí describiremos la configuración de la ventana acoplable para el marco de django y la base de datos mysql, que se almacenarán fuera del contenedor, para que no tenga que preocuparse de que algo le suceda a nuestro contenedor.
Al escribir esta guía, se utilizó lo siguiente:
- ubuntu 20.04
- estibador 19/03/12
- docker-compose 1.26.2
- pitón 3.8
- mysql 5.7
- django 3.1.1
- mysqlclient 2.0.1
- django-mysql 3.8.1
Configuración del espacio de trabajo
Antes de comenzar la configuración, debe preparar el espacio de trabajo:
- Instale docker y docker-compose . El proceso de instalación se detalla en la documentación de Docker.
- Cree un directorio donde se ubicará nuestro proyecto (en este ejemplo, proyecto). En este directorio, cree otro, que almacenará la configuración para ejecutar la imagen de Python (en este ejemplo, web).
./project
/web
Esto completa la preparación y puede comenzar a configurar nuestro pequeño proyecto.
requirements.txt
En el directorio web, cree un archivo llamado requirements.txt.
En este archivo, declaramos paquetes para que funcione nuestra aplicación django.
/project/web/requirements.txt
Django==3.1.1
mysqlclient==2.0.1
django-mysql==3.8.1
, , mysql.
.
Dockerfile
web Dockerfile.
Dockerfile . .
:
/project/web/Dockerfile
FROM python:3.8
ENV PYTHONUNBUFFERED 1
RUN mkdir /web_django
WORKDIR /web_django
COPY requirements.txt /web_django/
RUN pip install --upgrade pip && pip install -r requirements.txt
ADD . /web_django/
python , , . web_django .
pip (--upgrade pip), .. , .
docker-compose.yml
docker-compose.yml.
. - . compose , Docker , , . , .
.
/project/docker-compose.yml
version: '3'
services:
web:
build: ./web
command: python manage.py runserver 0.0.0.0:8000
volumes:
- .:/web_django
ports:
- '8000:8000'
depends_on:
- db
db:
image: mysql:5.7
ports:
- '3306:3306'
environment:
MYSQL_DATABASE: 'db_django'
MYSQL_USER: 'root'
MYSQL_PASSWORD: 'password'
MYSQL_ROOT_PASSWORD: 'password'
restart: always
volumes:
- ./db_django:/var/lib/mysql
web/Dockerfile . django 8000 . mysql.
mysql. : , , , ( , , ) , . , , , , mysql .
. django .
django
(project/) . django web_django.
sudo docker-compose run web django-admin startproject web_django .
:
drwxr-xr-x 6 root root 4,0K 16 21:49 db_django
-rw-rw-r-- 1 kafka kafka 466 16 21:31 docker-compose.yml
-rwxr-xr-x 1 root root 666 16 21:34 manage.py
drwxrwxr-x 2 kafka kafka 4,0K 16 21:31 web
drwxr-xr-x 3 root root 4,0K 16 21:34 web_django
, .. root .
sudo chown -R $USER:$USER web_django
django web_django/settings.py
, docker-compose.yml.
/project/web_django/settings.py
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'db_django',
'USER': 'root',
'PASSWORD': 'password',
'HOST': 'db',
'PORT': '3306',
}
}
docker-compose.
docker-compose up
docker-compose up -d
docker-compose build
, , :
docker-compose run web python manage.py makemigrations
docker-compose run web python manage.py migrate