Dockerize Dash Application
Hello guys, melanjutkan tutorial mengenai Dash untuk membuat website data visualisasi, kita akan membungkus aplikasi kita kedalam container docker untuk tahap production di real world. Silahkan untuk mendownload source codenya dan masuk kedalam folder dash-bootstrap-docker, Untuk menjalankan tanpa docker, gunakan perintah,
python index.pyPada kesempatan ini, saya akan menjelaskan bagaimana menggunakan gunicorn dan juga docker pada aplikasi dash.
Persiapan Instalasi Docker dan Docker-Compose
Pastikan docker dan docker-compose telah terinstall pada perangkat kalian, jika belum dapat menginstallnya dengan panduan berikut,
Instalasi docker lalu dilanjutkan dengan instalasi docker-compose
Instalasi gunicorn
Untuk webserver, kita akan menggunakan gunicorn sebagai pengganti flask development server yang secara default sudah terkonfigurasi saya kita menjalankan perintah python index.py. Instalasi gunicorn dapat dilakukan dengan perintah,
pip install gunicornDockerize the App
Kita akan membuat dockerfile dengan isi sebagai berikut :
FROM python:3.9
LABEL maintainer "Yunindyo Prabowo <yunindyo.prabowo@gmail.com>"
WORKDIR /code
COPY requirements.txt /
RUN pip install -r /requirements.txt
COPY ./ ./
ENV ENVIRONMENT_FILE=".env"
EXPOSE 8050
ENTRYPOINT ["gunicorn", "--config", "gunicorn_config.py", "index:server"]Karena aplikasi akan disajikan dengan gunicorn sebagai webserver, maka kita perlu membuat gunicorn_config.py dengan isi sebagai berikut :
bind = "0.0.0.0:8050"
workers = 4
threads = 4
timeout = 120Didalam docker image, host harus bernilai 0.0.0.0, selain itu maka tidak dapat diakses dari local host ataupun host yang telah didefinisikan.
kita juga perlu mendifisikan file Procfile :
web: gunicorn index:serverDapat dilihat kita akan menjalankan server flask seperti yang telah didefinisikan pada file app.py dari entypoint index.py.
Kita juga perlu mendifisikan file docker-compose.yml untuk memudahkan kita mem-build image dan menjalankan Docker image,
version: "3.7"
#
services:
dash-bootstrap:
build:
context: .
container_name: dash-bootstrap
ports:
- "8050:8050"
networks:
- dash-bootstrap-networks
# devnet:
# external:
# name: development
restart: unless-stopped
networks:
dash-bootstrap-networks:
driver: bridgeKemudian kita build dari terminal dengan perintah berikut :
docker-compose up -d --buildTunggu hingga prosesnya selesai kemudian buka 127.0.0.1:8050
Dan taraaa, kita telah berhasil mendeploy Aplikasi dash kita menggunakan docker.