A Simple CRUD App Example Using Django + sqlite3
913
资料:
https://docs.docker.com/get-started/overview/
https://docs.docker.com/samples/django/
https://docs.docker.com/engine/reference/builder/
https://www.section.io/engineering-education/django-docker/
PyCharm 完成开发,数据库使用 sqlite3切换到项目根目录,即 manage.py 所在路径,使用绑定挂载开发测试:docker run -dp 8000:8000 -w /app -v "%cd%:/app" python:3.10 sh -c "pip install --upgrade pip && pip install -r requirements.txt && python3 manage.py runserver 0.0.0.0:8000"
.dockerignore 的文件。如果此文件存在,CLI 会修改上下文以排除与其中的模式匹配的文件和目录。这有助于避免不必要地将大型或敏感文件和目录发送到守护程序。.dockerignore 文件:# comment
*/venv
*/temp*
*/*/temp*
temp?
PyCharm 中的 venv文件夹不与 manage.py 在同一级目录,因此不需要添加 .dockerignore 文件PyCharm 项目中与 manage.py 同级目录下创建 Dockerfile 文件,内容如下# syntax=docker/dockerfile:1
FROM python:3.10
ENV PYTHONDONTWRITEBYTECODE=1
ENV PYTHONUNBUFFERED=1
WORKDIR /code
COPY requirements.txt /code/
RUN pip install -r requirements.txt
COPY . /code/
CMD ["python3", "manage.py", "runserver", "0.0.0.0:8000"]
Dockerfile 从 Python 3 父镜像开始。通过添加新的 code 目录来修改父镜像。通过安装 requirements.txt 文件中定义的 Python 要求进一步修改父镜像。
Dockerfile 包含以下指令:
- FROM 指令初始化一个新的构建阶段并为后续指令设置基本镜像。
- ENV 指令将环境变量
<key>设置为值<value>。 与命令行解析一样,引号和反斜杠可用于在值中包含空格。
- WORKDIR 指令为 Dockerfile 中任何 RUN、CMD、ENTRYPOINT、COPY 和 ADD 指令设置工作目录。
- COPY 指令从
<src>复制新文件或目录,并将它们添加到路径<dest>的容器文件系统中。
- RUN 指令将在当前镜像之上的新层中执行任何命令并提交结果。生成的提交镜像将用于 Dockerfile 中的下一步。
- CMD 指令的主要目的是为执行容器提供默认值。
在某些平台 (Windows 10) 上,您可能需要在 settings.py 内部进行编辑并将 Docker 主机名或 IP 地址添加到 ALLOWED_HOSTS 列表中。出于演示目的,您可以将值设置为:ALLOWED_HOSTS = ['*'],这个值对于生产使用是不安全的。
构建镜像
docker build --tag django-crudapp .
docker run -dp 8000:8000 django-crudapp
-d: 这个选项表示以后台(detached)模式运行容器,即在后台运行容器并立即返回控制台。
-p <host_port>:<container_port>:这个选项指定了一个端口映射规则,将容器内的 <container_port> 映射到宿主机的 <host_port>。这样一来,宿主机上的服务就可以通过 <host_port> 访问到容器内的服务。
django-crudapp。确保 Visibility(可见性) 为 Public。docker push d10g/django-crudapp:tagname。此命令将 Docker 镜像推送到此 repo。docker login -u d10g
docker tag 命令为 django-crudapp 镜像指定一个新名称docker tag django-crudapp d10g/django-crudapp:v2022.10.31
tagname ,Docker 将使用一个名为 latest 的标签名docker push d10g/django-crudapp:v2022.10.31
docker run -dp 8000:8000 --name django-crudapp d10g/django-crudapp:v2022.10.31
Content type
Image
Digest
sha256:b397c652e…
Size
350.1 MB
Last updated
almost 4 years ago
docker pull d10g/django-crudapp