Framework saat ini sudah sangat luas, dengan berbagai bahasa di dalamnya, seperti C++, Python dan lainnya. Selain itu, rata-rata framework tersebut open-source atau free. Sehingga dapat digunakan secara bebas dan dimodifikasi sesuai kebutuhan pada aplikasi yang akan dibuat nantinya. Pada artikel ini akan membahas mengenai Cara Deploy Django ke Docker.

Django

Django adalah salah satu Web Framework berbasis Python yang di design untuk dapat membuat aplikasi yang dinamis.

Docker

Docker adalah teknologi yang dapat membuat kita mudah membuat, deploy, and menjalankan aplikasi dengan menggunakan container. Container ini dapat menjalankan aplikasi yang berbeda di satu server yang sama.

Penerapan Docker ini biasa dilakukan developer yang memiliki beberapa project atau ingin melakukan test deploy.

Persyaratan

Sebelum memulai proses instalas cara deploy django ke docker kamu harus memastikan memiliki beberapa persyaratan di bawah ini.

  • Memiliki server dengan CentOS 7.
  • Memiliki akses sebagai root.

Cara Deploy Django ke Docker 

Step 1 – Install Docker

Untuk instalasi Docker kamu bisa ikuti referensi pada artikel Cara Install Docker di CentOS 7 [link].

Step 2 – Install SCL & epel-release

Kamu harus install centos scl dan repo epel-release terlebih dahulu dengan perintah di bawah ini.

SCL 

SCL atau Software Collections adalah community project yang mengizinkan kamu untuk membuat, menginstall, dengan menggunakan multiple versi software atau aplikasi dalam satu system atau server.

$ yum install centos-release-scl epel-release -y

Step 3 – Install Python

Karena kamu sudah memiliki akses SCL, kamu bisa install Python 3.x sesuai kebutuhan kamu. 

Versi yang tersedia:

  • Python 3.3
  • Python 3.4
  • Python 3.5
  • Python 3.6

$ yum install rh-python36

 

Kalau package rh-python36 sudah terinstall, saat melakukan pengecekan versi python masih akan ditunjukan sebagai python 2.7 seperti di bawah ini.

 

$ python –version

Python 2.7.5

 

Aktifkan SCL untuk mengizinkan kamu menggunakan Python 3.6.

 

$ scl enable rh-python36 bash

 

Kemudian perintah tersebut akan memanggil script /opt/rh/rh-python36/enable, yang mana akan merubah shell environment variable kamu. Kemudian cek kembali versi Pythonnya.

 

$ python –version

Python 3.6.9

 

Kemudian cek versi Python dengan menggunakan perintah berikut.

 

$ /usr/local/bin/python2.7 -V

Python 2.7.16

Step 4 – Install Pip

Kamu memerlukan instalasi Python pip menggunakan perintah di bawah ini.

 

$ yum install python-pip -y

 

Kemudian cek versi pip nya.

 

$ pip -V

pip 9.0.1 from /opt/rh/rh-python36/root/usr/lib/python3.6/site-packages (python 3.6)

Step 5 – Install Django

Disini kami akan menginstal Django.

 

$ pip install django

Step 6 – Build Django App

Buat aplikasi Django terlebih dahulu.

 

$ django-admin startproject dewadjango

 

Buat file requirement di dalam directory dewadjango.

 

$ cd dewadjango/

$ nano requirements.txt

 

Tambahkan script di bawah ini pada file requirements tersebut.

 

Django==2.1.5

gunicorn==19.9.0

Step 7 – Create Dockerfile

Kamu perlu membuat Dockerfile dengan base image sesuai dengan versi Python yang kamu install.

 

$ nano Dockerfile

 

FROM python:3.6

WORKDIR /app        

COPY requirements.txt ./

RUN pip install –no-cache-dir -r requirements.txt

EXPOSE 8000

CMD exec gunicorn dewadjango.wsgi:application –bind 0.0.0.0:8000 –workers 3

Step 8 – Docker Build

Setelah kamu membuat Dockerfile, kemudian jalankan.

 

$ docker build -t django .

Sending build context to Docker daemon  17.41kB

Step 1/7 : FROM python:3.6

 —> 971c66f6a27f

Step 2/7 : ADD . /app

 —> fbf039e26632

Step 3/7 : WORKDIR /app

 —> Running in a362b0d30d3a

Removing intermediate container a362b0d30d3a

 —> 835b19e88791

Step 4/7 : COPY requirements.txt ./

 —> 4ba8769b3f3a

Step 5/7 : RUN pip install –no-cache-dir -r requirements.txt

 —> Running in c3b7f2a385df

Collecting Django==2.1.5

  Downloading Django-2.1.5-py3-none-any.whl (7.3 MB)

Collecting gunicorn==19.9.0

  Downloading gunicorn-19.9.0-py2.py3-none-any.whl (112 kB)

Collecting pytz

  Downloading pytz-2019.3-py2.py3-none-any.whl (509 kB)

Installing collected packages: pytz, Django, gunicorn

Successfully installed Django-2.1.5 gunicorn-19.9.0 pytz-2019.3

Removing intermediate container c3b7f2a385df

 —> 813907f6f6dd

Step 6/7 : EXPOSE 8000

 —> Running in eb56cad6f8b7

Removing intermediate container eb56cad6f8b7

 —> 512120c34a3b

Step 7/7 : CMD exec gunicorn dewadjango.wsgi:application –bind 0.0.0.0:8000 –workers 3

 —> Running in d1760fd341d1

Removing intermediate container d1760fd341d1

 —> 2e64e6793110

Successfully built 2e64e6793110

Successfully tagged django:latest

 

Artinya adalah kamu sudah berhasil membuat image docker bernama django.

 

Namun, saat kamu jalankan perintah build docker dan mendapatkan error seperti di bawah ini.

 

WARNING: Retrying (Retry(total=4, connect=None, read=None, redirect=None, status=None)) after connection broken by ‘NewConnectionError(‘<pip._vendor.urllib3.connection.VerifiedHTTPSConnection object at 0x7f3b91e1ad30>: Failed to establish a new connection: [Errno -3] Temporary failure in name resolution’,)’: /simple/django/

 

Maka solusinya kamu perlu restart services docker.

 

$ service docker restart

 

Kemudian jalankan ulang perintah buildnya.

 

Untuk melakukan pengecekan docker image dapat menggunakan perintah di bawah ini.

 

$ docker images

REPOSITORY                 TAG                 IMAGE ID            CREATED             SIZE

django              latest              2d988f652b40        50 seconds ago      941MB

Step 9 – Running Container

Jalankan aplikasi kamu di dalam container dengan menggunakan perintah berikut.

 

$ sudo docker run -d –name django -p 8000:8000 django

4140560d507a87ba2a82046d6bfdb5269d3a98b119476c48032ec4d223d46fb5

 

Perintah di atas menjalankan container dengan nama django dan mengeksposnya ke port 8000.

Kemudian kamu bisa cek docker container yang kamu jalankan dengan mengakses URLnya sesuai dengan port yang di expose: http://IP-Server:8000

 

Kesimpulan

Tampilan di atas ini menandakan bahwa kamu telah berhasil melakukan deploy aplikasi Django ke Docker Container.

Demikian artikel ini, jangan sungkan untuk meninggalkan ide-ide topik yang ingin kamu baca di blog Dewaweb. Semoga artikel ini membantu!

Daftar dan tonton webinar Dewatalks