GNU/Linux >> Belajar Linux >  >> Panels >> Docker

Panduan Docker:Aplikasi Dockerisasi Python Django

Docker adalah proyek sumber terbuka yang menyediakan platform terbuka bagi pengembang dan sysadmin untuk membangun, mengemas, dan menjalankan aplikasi di mana saja sebagai wadah yang ringan. Docker mengotomatiskan penerapan aplikasi di dalam wadah perangkat lunak.

Django adalah kerangka kerja aplikasi web yang ditulis dalam python yang mengikuti arsitektur MVC (Model-View-Controller). Ini tersedia secara gratis dan dirilis di bawah lisensi open source. Ini cepat dan dirancang untuk membantu pengembang membuat aplikasi mereka online secepat mungkin.

Dalam tutorial ini, saya akan menunjukkan kepada Anda langkah demi langkah cara membuat gambar buruh pelabuhan untuk proyek aplikasi Django yang ada di Ubuntu 16.04. Kita akan belajar tentang meng-docker aplikasi python Django, dan kemudian menerapkan aplikasi tersebut sebagai wadah ke lingkungan buruh pelabuhan menggunakan skrip pembuatan buruh pelabuhan.

Untuk menyebarkan aplikasi python Django kami, kami membutuhkan gambar buruh pelabuhan tambahan. Kami memerlukan gambar buruh pelabuhan nginx untuk server web dan gambar PostgreSQL untuk database.

Apa yang akan kita lakukan?

  1. Instal Docker-ce
  2. Instal Docker-compose
  3. Konfigurasikan Lingkungan Proyek
  4. Bangun dan Jalankan
  5. Pengujian

Langkah 1 - Instal Docker-ce

Dalam tutorial ini, kita akan menginstal edisi komunitas docker-ce dari repositori docker. Kami akan menginstal docker-ce community edition dan docker-compose yang mendukung compose file versi 3.

Sebelum menginstal docker-ce, instal dependensi docker yang diperlukan menggunakan perintah apt.

sudo apt install -y \
    apt-transport-https \
    ca-certificates \
    curl \
    software-properties-common

Sekarang tambahkan kunci buruh pelabuhan dan repositori dengan menjalankan perintah di bawah ini.

curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
sudo add-apt-repository \
   "deb [arch=amd64] https://download.docker.com/linux/ubuntu \
   $(lsb_release -cs) \
   stable"

Perbarui repositori dan instal docker-ce.

sudo apt update
sudo apt install -y docker-ce

Setelah instalasi selesai, mulai layanan buruh pelabuhan dan aktifkan untuk diluncurkan setiap kali sistem boot.

systemctl start docker
systemctl enable docker

Selanjutnya, kita akan menambahkan pengguna baru bernama 'omar' dan menambahkannya ke grup buruh pelabuhan.

useradd -m -s /bin/bash omar
usermod -a -G docker omar

Login sebagai user omar dan jalankan perintah docker seperti di bawah ini.

su - omar
docker run hello-world

Pastikan Anda mendapatkan pesan hello-world dari Docker.

Instalasi Docker-ce telah selesai.

Langkah 2 - Instal Docker-compose

Dalam tutorial ini, kita akan menggunakan dukungan docker-compose terbaru untuk file compose versi 3. Kami akan menginstal docker-compose secara manual.

Unduh versi terbaru dari docker-compose menggunakan perintah curl ke direktori '/usr/local/bin' dan buat agar dapat dieksekusi menggunakan chmod.

Jalankan perintah di bawah ini.

sudo curl -L https://github.com/docker/compose/releases/download/1.21.0/docker-compose-$(uname -s)-$(uname -m) -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose

Sekarang periksa versi docker-compose.

docker-compose version

Dan pastikan Anda mendapatkan versi terbaru dari docker-compose 1.21.

Versi terbaru docker-compose yang mendukung file compose versi 3 telah diinstal.

Langkah 3 - Konfigurasikan Lingkungan Proyek

Pada langkah ini, kita akan mengkonfigurasi lingkungan proyek python Django. Kami akan membuat direktori baru 'guide01' dan menjadikannya sebagai direktori utama untuk file proyek kami, seperti file Docker, proyek Django, file konfigurasi nginx dll.

Masuk ke pengguna 'omar'.

su - omar

Buat direktori baru 'guide01' dan buka direktori tersebut.

mkdir -p guide01
cd guide01/

Sekarang di dalam direktori 'guide01', buat direktori baru 'project' dan 'config'.

mkdir project/ config/

Catatan:

  • Direktori 'proyek':Semua file proyek python Django kami akan ditempatkan di direktori itu.
  • Direktori 'config':Direktori untuk file konfigurasi proyek, termasuk file konfigurasi nginx, file persyaratan python pip, dll.

Buat file requirements.txt baru

Selanjutnya, buat file baru 'requirements.txt' di dalam direktori 'config' menggunakan perintah vim.

vim config/requirements.txt

Tempelkan konfigurasi di bawah ini.

Django==2.0.4  
gunicorn==19.7.0 
psycopg2==2.7.4

Simpan dan keluar.

Buat file host virtual Nginx django.conf

Di bawah direktori config, buat direktori konfigurasi 'nginx' dan tambahkan file konfigurasi virtual host django.conf.

mkdir -p config/nginx/
vim config/nginx/django.conf

Tempelkan konfigurasi berikut di sana.

upstream web {
  ip_hash;
  server web:8000;
}

# portal
server {
  location / {
        proxy_pass http://web/;
    }
  listen 8000;
  server_name localhost;

  location /static {   
    autoindex on;   
    alias /src/static/;   
  }
}

Simpan dan keluar.

Buat Dockerfile

Buat 'Dockerfile' baru di dalam direktori 'guide01'.

Jalankan perintah di bawah ini.

vim Dockerfile

Sekarang rekatkan skrip Dockerfile di bawah ini.

FROM python:3.5-alpine
ENV PYTHONUNBUFFERED 1 

RUN apk update && \
    apk add --virtual build-deps gcc python-dev musl-dev && \
    apk add postgresql-dev bash

RUN mkdir /config 
ADD /config/requirements.txt /config/ 
RUN pip install -r /config/requirements.txt
RUN mkdir /src
WORKDIR /src

Simpan dan keluar.

Catatan:

Kami ingin membangun gambar Docker untuk proyek Django kami berdasarkan Alpine Linux, ukuran terkecil dari Linux. Proyek Django kami akan menjalankan Alpine Linux dengan python 3.5 terinstal di atasnya dan menambahkan paket postgresql-dev untuk dukungan database PostgreSQL. Dan kemudian kita akan menginstal semua paket python yang terdaftar pada file 'requirements.txt' menggunakan perintah python pip, dan membuat '/src' baru untuk proyek kita.

Buat skrip penulisan Docker

Buat file 'docker-compose.yml' di bawah direktori 'guide01' menggunakan perintah vim di bawah ini.

vim docker-compose.yml

Tempelkan konfigurasi berikut di sana.

version: '3'
services:
  db:
    image: postgres:10.3-alpine
    container_name: postgres01
  nginx:
    image: nginx:1.13-alpine
    container_name: nginx01
    ports:
      - "8000:8000"
    volumes:
      - ./project:/src
      - ./config/nginx:/etc/nginx/conf.d
    depends_on:
      - web
  web:
    build: .
    container_name: django01
    command: bash -c "python manage.py makemigrations && python manage.py migrate && python manage.py collectstatic --noinput && gunicorn hello_django.wsgi -b 0.0.0.0:8000"
    depends_on:
      - db
    volumes:
      - ./project:/src
    expose:
      - "8000"
    restart: always

Simpan dan keluar.

Catatan:

Dengan skrip file komposisi buruh pelabuhan ini, kami akan membuat tiga layanan. Buat layanan basis data bernama 'db' menggunakan PostgreSQL alpine Linux, buat layanan 'nginx' menggunakan Nginx alpine Linux lagi, dan buat wadah python Django kami menggunakan gambar buruh pelabuhan khusus yang dihasilkan dari Dockerfile kami.

Konfigurasikan proyek Django

Salin file proyek Django Anda ke direktori 'proyek'.

cd ~/django
cp -r * ~/guide01/project/

Buka direktori 'proyek' dan edit setelan aplikasi 'settings.py'.

cd ~/guide01/project/
vim hello_django/settings.py

Catatan:

Kami akan menyebarkan aplikasi Django sederhana yang disebut aplikasi 'hello_django'.

Pada baris 'ALLOW_HOSTS', tambahkan nama layanan 'web'.

ALLOW_HOSTS = ['web']

Sekarang ubah pengaturan basis data. Kami akan menggunakan database PostgreSQL yang berjalan sebagai layanan bernama 'db' dengan pengguna dan kata sandi default.

DATABASES = {  
    'default': {
        'ENGINE': 'django.db.backends.postgresql_psycopg2',
        'NAME': 'postgres',
        'USER': 'postgres',
        'HOST': 'db',
        'PORT': 5432,
    }
}

Dan untuk direktori konfigurasi 'STATIC_ROOT', tambahkan baris ini ke akhir baris file.

STATIC_ROOT = os.path.join(BASE_DIR, 'static/')

Simpan dan keluar.

Sekarang kita siap untuk membangun dan menjalankan proyek Django di bawah wadah buruh pelabuhan.

Langkah 4 - Bangun dan Jalankan image Docker

Pada langkah ini, kita ingin membangun image Docker untuk proyek Django kita menggunakan konfigurasi pada direktori 'guide01'.

Buka direktori 'guide01'.

cd ~/guide01/

Sekarang buat image buruh pelabuhan menggunakan perintah docker-compose.

docker-compose build

Mulai semua layanan di dalam skrip docker-compose.

docker-compose up -d

Tunggu beberapa menit hingga Docker membuat image Python dan mengunduh image docker nginx dan postgresql.

Dan jika sudah selesai, periksa container yang sedang berjalan dan daftar gambar buruh pelabuhan di sistem menggunakan perintah berikut.

docker-compose ps
docker-compose images

Dan sekarang Anda akan menjalankan tiga container dan daftar image Docker pada sistem seperti yang ditunjukkan di bawah ini.

Aplikasi Python Django kami sekarang berjalan di dalam wadah buruh pelabuhan, dan gambar buruh pelabuhan untuk layanan kami telah dibuat.

Langkah 5 - Pengujian

Buka browser web Anda dan ketik alamat server dengan port 8000, milik saya adalah: http://ovh01:8000/

Sekarang Anda akan mendapatkan halaman beranda Django default.

Selanjutnya, uji halaman admin dengan menambahkan jalur '/admin' pada URL.

http://ovh01:8000/admin/

Dan Anda akan melihat halaman login admin Django.

Aplikasi Dockerizing Python Django telah berhasil diselesaikan.


Docker
  1. Instal Python 3.11 di Ubuntu 20.04 - Panduan langkah demi langkah?

  2. Kapan dan Mengapa Menggunakan Docker

  3. Panduan Lengkap Pemula untuk Docker Logging

  1. Menjalankan PostgreSQL di Docker, Panduan Cepat dan Praktis

  2. Cara Menjalankan Nginx dalam Wadah Docker:Panduan Langkah demi Langkah

  3. Panduan Cepat untuk Menggunakan Docker Compose

  1. Cara Menginstal Django di Ubuntu 18.04

  2. Cara Menginstal Django di CentOS 7

  3. Panduan Docker:Aplikasi Dockerizing Nodejs Express di Ubuntu 18.04