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:
- Instal buruh pelabuhan dan buruh pelabuhan-menulis . Proses instalasi dirinci dalam dokumentasi buruh pelabuhan.
- 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