Как установить Django+Postgres на Docker, используя базовый образ Alpine:3.14
Следующие три файла необходимо создать в папке проекта
Dockerfile
# syntax=docker/dockerfile:1
FROM alpine:3.14
ENV PYTHONUNBUFFERED=1
WORKDIR /code
COPY requirements.txt /code/
RUN apk update
RUN apk add postgresql-dev
RUN apk add gcc
RUN apk add python3-dev
RUN apk add musl-dev
RUN apk add py3-pip
RUN pip install psycopg2
RUN pip install -r requirements.txt
COPY . /code/
docker-compose.yml
version: "3.9"
services:
db:
image: postgres
volumes:
- ./data/db:/var/lib/postgresql/data
environment:
- POSTGRES_DB=postgres
- POSTGRES_USER=postgres
- POSTGRES_PASSWORD=postgres
web:
build: .
command: python3 manage.py runserver 0.0.0.0:8000
volumes:
- .:/code
ports:
- "8000:8000"
depends_on:
- db
requirements.txt
Django>=3.0,<4.0
psycopg2-binary>=2.8
После создания вышеуказанных 3 файлов выполните следующую команду:
docker-compose run web django-admin startproject example_project .
Далее вам нужно будет изменить настройки для базы данных в недавно созданном файле settings.py в папке вашего проекта django. settings.py
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.postgresql',
'NAME': 'postgres',
'USER': 'postgres',
'PASSWORD': 'postgres',
'HOST': 'db',
'PORT': 5432,
}
}
Run:
docker-compose up
После запуска сервера перейдите в терминал вашего контейнера и выполните миграцию. (Docker Desktop > Container/Apps > Expand docker > Docker_web CLI)
>python3 manage.py migrate
Быстрые заметки: Прежде чем приступить к установке Docker, я установил WSL, используя следующую документацию: https://docs.microsoft.com/en-us/windows/wsl/install-win10
Затем я скачал Alpine Linux по следующей ссылке: https://github.com/yuk7/AlpineWSL
Ссылка на скачивание следующая: https://github.com/yuk7/AlpineWSL/releases/tag/3.14.0-1
Затем я установил для этого Alpine версию 2.
Вы можете проверить, какая версия установлена для изображений, используя wsl -l -v
.
Вы можете установить версию 2 с помощью wsl --set-version Alpine 2
Полезные команды:
1] Для пересборки образа докера после внесения изменений в Dockerfile используйте:
docker build .