Configuración de Docker para django en mysql

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:



  1. Instale docker y docker-compose . El proceso de instalación se detalla en la documentación de Docker.
  2. 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



All Articles