Flask Mega-Tutorial — Bölüm 19: Deployment on Docker Containers


Giriş

Bu bölümde Microblog Docker container teknolojisiyle dağıtılıyor. Docker, uygulamayı bağımlılıklarıyla birlikte izole bir ortamda çalıştıran hafif sanallaştırma çözümüdür. Linux, Windows ve macOS'ta çalışır; geliştirme ve üretim ortamını birbirine yaklaştırır.


Docker Kurulumu

https://docs.docker.com/get-docker/ adresinden Docker Desktop indirin ve kurun.

Kurulumu doğrulayın:

$ docker version

Container Image Oluşturma

Dockerfile (proje kök dizininde)

FROM python:slim

COPY requirements.txt requirements.txt
RUN pip install -r requirements.txt
RUN pip install gunicorn pymysql cryptography

COPY app app
COPY migrations migrations
COPY microblog.py config.py boot.sh ./
RUN chmod a+x boot.sh

ENV FLASK_APP microblog.py
RUN flask translate compile

EXPOSE 5000
ENTRYPOINT ["./boot.sh"]

Komutların açıklaması:

Komut Açıklama
FROM python:slim Temel imaj: minimal Python imajı
COPY Dosyaları host'tan container dosya sistemine kopyalar
RUN pip install Bağımlılıkları kurar
RUN chmod a+x boot.sh Başlatma scriptini çalıştırılabilir yapar (Windows uyumluluğu için)
ENV FLASK_APP Container içinde ortam değişkeni tanımlar
RUN flask translate compile Çeviri dosyalarını derler
EXPOSE 5000 Container'ın 5000 portunu açar
ENTRYPOINT Container başladığında çalışacak komutu belirtir

boot.sh — Başlatma Scripti

#!/bin/bash
while true; do
    flask db upgrade
    if [[ "$?" == "0" ]]; then
        break
    fi
    echo Upgrade command failed, retrying in 5 secs...
    sleep 5
done
exec gunicorn -b :5000 --access-logfile - --error-logfile - microblog:app