A Simple Blog App Example Using Django + sqlite3
59
资料:
https://www.w3schools.com/django/index.php
PyCharm 完成开发,数据库使用 sqlite3打开CMD,切换到项目根目录,即 manage.py 所在路径,使用pip freeze > requirements.txt生成 requirements.txt 文件。
使用绑定挂载开发测试: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-blog .
docker run -dp 8000:8000 django-blog
-d: 这个选项表示以后台(detached)模式运行容器,即在后台运行容器并立即返回控制台。
-p <host_port>:<container_port>:这个选项指定了一个端口映射规则,将容器内的 <container_port> 映射到宿主机的 <host_port>。这样一来,宿主机上的服务就可以通过 <host_port> 访问到容器内的服务。
Bind for 0.0.0.0:8000 failed: port is already allocated.报错,运行docker container ls找到CONTAINER ID值,结束掉该容器docker stop 5a831d354744django-blog。确保 Visibility(可见性) 为 Public。docker push d10g/django-blog:tagname。此命令将 Docker 镜像推送到此 repo。docker login -u d10g
docker tag 命令为 django-blog 镜像指定一个新名称docker tag django-blog d10g/django-blog:v2023.6.30
tagname ,Docker 将使用一个名为 latest 的标签名docker push d10g/django-blog:v2023.6.30
docker run -dp 8000:8000 --name django-blog d10g/django-blog:v2023.6.30
注:Import JSON Data 的口令是 123456,后台登录的用户名和密码都是 admin
Content type
Image
Digest
sha256:3f4d1fbe4…
Size
351.7 MB
Last updated
about 3 years ago
docker pull d10g/django-blog:v2023.6.30