Mendeploy Flask dan PostgreSQL dengan Docker Compose
Dalam artikel ini, saya akan menunjukkan contoh penggunaan Docker Compose untuk mendeploy aplikasi web Flask yang didukung oleh database PostgreSQL.
Struktur direktori adalah sebagai berikut:
flask_app/
├── app/
│ ├── __init__.py
│ ├── main.py
│ └── templates/
│ └── index.html
├── Dockerfile
├── docker-compose.yml
└── requirements.txt
Mendefinisikan Kontainer
- Buat aplikasi Flask sederhana (
app/main.py
):
from flask import Flask, render_template
app = Flask(__name__)
@app.route('/')
def home():
return render_template('index.html')
if __name__ == '__main__':
app.run(host='0.0.0.0', port=5000)
- Buat template dasar untuk aplikasi Flask (
app/templates/index.html
):
<!DOCTYPE html>
<html>
<head>
<title>Flask App with PostgreSQL</title>
</head>
<body>
<h1>Welcome to our Flask app with PostgreSQL</h1>
</body>
</html>
- Buat
Dockerfile
untuk aplikasi Flask:
FROM python:3.9-slim
WORKDIR /app
COPY requirements.txt requirements.txt
RUN pip install -r requirements.txt
COPY app app
CMD ["python", "app/main.py"]
- Tambahkan paket Python yang diperlukan ke dalam file
requirements.txt
:
Flask==2.1.1
gunicorn==20.1.0
- Buat file
docker-compose.yml
untuk mendefinisikan layanan aplikasi Flask dan PostgreSQL:
version: '3.9'
services:
web:
build: .
ports:
- "5000:5000"
depends_on:
- db
db:
image: postgres:13-alpine
environment:
POSTGRES_USER: postgres
POSTGRES_PASSWORD: postgres
POSTGRES_DB: flask_db
volumes:
- db_data:/var/lib/postgresql/data
volumes:
db_data:
Pada contoh ini, kita mendefinisikan dua layanan: web
dan db
. Layanan web
adalah aplikasi Flask kita, dibangun dari Dockerfile
direktori saat ini. Layanan db
menggunakan gambar resmi PostgreSQL dan termasuk variabel lingkungan untuk nama pengguna, kata sandi, dan nama database. Kita juga membuat volume bernama (db_data
) untuk mempertahankan data PostgreSQL.
Menjalankan Kontainer
Untuk mendeploy aplikasi Flask ini dengan PostgreSQL:
- Bangun gambar Docker:
$ docker-compose build
- Jalankan layanan dan buat kontainer:
$ docker-compose up -d
Sekarang, Anda dapat mengakses aplikasi Flask di http://localhost:5000
. Aplikasi akan menampilkan pesan sederhana "Welcome to our Flask app with PostgreSQL".