Traffine I/O

Bahasa Indonesia

2022-06-14

Mendeploy Flask dan PostgreSQL dengan Docker Compose

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

  1. Buat aplikasi Flask sederhana (app/main.py):
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)
  1. Buat template dasar untuk aplikasi Flask (app/templates/index.html):
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>
  1. Buat Dockerfile untuk aplikasi Flask:
Dockerfile
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"]
  1. Tambahkan paket Python yang diperlukan ke dalam file requirements.txt:
requirements.txt
Flask==2.1.1
gunicorn==20.1.0
  1. Buat file docker-compose.yml untuk mendefinisikan layanan aplikasi Flask dan PostgreSQL:
docker-compose.yml
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:

  1. Bangun gambar Docker:
bash
$ docker-compose build
  1. Jalankan layanan dan buat kontainer:
bash
$ 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".

Ryusei Kakujo

researchgatelinkedingithub

Focusing on data science for mobility

Bench Press 100kg!