Menyiapkan buruh pelabuhan untuk django di mysql

Ada banyak artikel yang tidak relevan di Internet, jadi saya menyiapkan publikasi ini. Pada dasarnya, saat menulis artikel, saya mengandalkan contoh konfigurasi buruh pelabuhan untuk django di dokumentasi buruh pelabuhan.



Di sini kami akan menjelaskan pengaturan buruh pelabuhan untuk kerangka kerja django dan database mysql, yang akan disimpan di luar penampung, jadi Anda tidak perlu khawatir tentang sesuatu yang terjadi pada penampung kami.



Dalam menulis panduan ini, berikut digunakan:



  • ubuntu 20.04
  • buruh pelabuhan 03/19/12
  • buruh pelabuhan-menulis 1.26.2
  • python 3.8.0
  • mysql 5.7.0
  • django 3.1.1
  • mysqlclient 2.0.1
  • django-mysql 3.8.1


Pengaturan ruang kerja



Sebelum memulai penyiapan, Anda perlu menyiapkan ruang kerja:



  1. Instal buruh pelabuhan dan buruh pelabuhan-menulis . Proses instalasi dirinci dalam dokumentasi buruh pelabuhan.
  2. Buat direktori tempat proyek kita akan ditempatkan (dalam contoh ini, proyek). Di direktori ini, buat yang lain, yang akan menyimpan konfigurasi untuk menjalankan gambar python (dalam contoh ini, web).


./project
      /web


Ini menyelesaikan persiapan dan Anda dapat mulai menyiapkan proyek kecil kami.



persyaratan.txt



Di direktori web, buat file bernama Requirement.txt.

Dalam file ini, kami mendeklarasikan paket untuk aplikasi django kami untuk bekerja.



/project/web/requirements.txt



Django==3.1.1
mysqlclient==2.0.1
django-mysql==3.8.1


Seperti yang Anda lihat, django sendiri terdaftar di sini, serta paket untuk berkomunikasi dengan database 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




Buka file pengaturan django proyek di sepanjang jalur web_django / settings.py

Dalam file ini kita akan mengganti pengaturan koneksi database yang kita tentukan di 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',
    }
}


Sekarang semuanya sudah siap dan Anda dapat menjalankan docker-compose.



Peluncuran proyek



Untuk memulai kontainer, jalankan perintah ini



docker-compose up


Untuk menjalankan kontainer di latar belakang, Anda perlu menentukan argumen tambahan



docker-compose up -d


Untuk membangun kembali gambar, Anda dapat menjalankan perintah



docker-compose build


Migrasi database



Untuk memigrasi database, jalankan perintah:



docker-compose run web python manage.py makemigrations


docker-compose run web python manage.py migrate



All Articles