Örnek Konfigürasyon
Dev
Dockerfile
Django dev ortamında çalışırken dosyalarımızı /code altından çalıştırmalıyız. Aksi halde kodda değişiklik yaptığımızda canlı ortama yansımayacaktır.
Uygulamamız hafif bir uygulama ise Docker Alpine kullanabiliriz. Eğer pillow, pandas, numpy kullanan bir uygulamamız varsa Docker Slim kullanmalıyız. Burada arkadaş meseleyi çok güzel anlatmış. https://stackoverflow.com/a/58210701/6520719
pillow, pandas, numpy yüklemelerinde bazen sorun yaşayabiliriz. stackoverflow da biraz araştırma yapmamız gerekiyor.
Postgres, Nginx, Redis, Celery, de Docker Alpine kullanabiliriz.
# pull official base image
FROM python:3.8.1-slim
# set work directory
WORKDIR /code
# set environment variables
ENV PYTHONDONTWRITEBYTECODE 1
ENV PYTHONUNBUFFERED 1
RUN apt-get update && apt-get install -qq -y \
build-essential libpq-dev libffi-dev --no-install-recommends git \
python3-dev python3-setuptools
# install dependencies
RUN pip install --upgrade pip
COPY ./req_dev.txt /code/req_dev.txt
RUN pip install -r req_dev.txt
# copy entrypoint.sh
COPY ./entrypoint.sh /code/
# copy project
COPY . /code/
# run entrypoint.sh
ENTRYPOINT ["/code/entrypoint.sh"]Dosyayı çalıştırabilmeyiz. chmod +x entrypoint.sh
Docker-compose.yml
Burada postgres bağlantımız yok. Çünkü local makinedeki postgres'e bağlanmayı tercih ediyorum. Problem sayfasına bakın.
.env.dev
Prod
Dockerfile.prod
Slim için
RUN groupadd -r app && useradd -r app -g app
Alpine için
RUN addgroup -S app && adduser -S app -G app
apt-get yerine aşağıdakini kullanmalıyız.
Docker-compose.prod.yml
Bu örnekte docker-nginx-proxy kullanılıyor ve Letsencrypt sertifika yükleniyor. Docker
Postgres'i de container içinden kullanıyoruz.
Bilgisayarımızdan http://localhost:1337 den sitemizi test etmek istersek. portu açıp expose yi kapatmalıyız. networks ve enviroment de kapatılacak.
.env.prod
env.prod.db
Nginx
/nginx dizini altında
Dockerfile
nginx.conf
Last updated