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?
- Instal Docker-ce
- Instal Docker-compose
- Konfigurasikan Lingkungan Proyek
- Bangun dan Jalankan
- 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.