如何使用基本映像 Alpine:3.14 在 Docker 上安装 Django+Postgres

How to install Django+Postgres on Docker using base image Alpine:3.14

以下是您需要在项目文件夹中创建的前三个文件

Docker文件

# 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 .

接下来,您必须在 django 项目文件夹中新创建的 settings.py 文件中修改数据库设置。 settings.py

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.postgresql',
        'NAME': 'postgres',
        'USER': 'postgres',
        'PASSWORD': 'postgres',
        'HOST': 'db',
        'PORT': 5432,
    }
}

运行:

docker-compose up

由于服务器 运行正在转到容器的终端并进行迁移 (Docker 桌面 > Container/Apps > 展开 docker > Docker_web CLI)

python3 manage.py migrate

快速笔记: 在继续 Docker 安装之前,我使用以下文档安装了 WSL: https://docs.microsoft.com/en-us/windows/wsl/install-win10

然后我从下面link下载了Alpine Linux: https://github.com/yuk7/AlpineWSL

下载Link如下: https://github.com/yuk7/AlpineWSL/releases/tag/3.14.0-1

然后我把这个Alpine设置为版本2 您可以使用 wsl -l -v 检查图像设置的版本 您可以使用 wsl --set-version Alpine 2

将版本设置为 2

有用的命令:

1] 要在更改 Docker 文件后重建 docker 映像,请使用:

docker build .