创建Django项目
安装django
$ pip install django
创建django项目
$ django-admin startproject [project-name]
进入创建的项目根目录
$ cd [project-name]
迁移数据
$ python manage.py migrate
用docker打包项目
新建Dokcerfile
文件,写入以下内容
# 基础镜像
FROM python:3.8
# 镜像作者
MAINTAINER Author
# 设置 python 环境变量
ENV PYTHONUNBUFFERED 1
# 创建 code 文件夹并将其设置为工作目录
RUN mkdir /code
WORKDIR /code
# 更新 pip
RUN pip install pip -U
# 设置pip源为国内源
COPY pip.conf /root/.pip/pip.conf
# 将 requirements.txt 复制到容器的 code 目录
ADD requirements.txt /code/
# 安装库
RUN pip install -r requirements.txt
# 将当前目录复制到容器的 code 目录
# ADD . /code/
pip.conf
文件为pip配置文件,内容如下
[global]
index-url = https://pypi.tuna.tsinghua.edu.cn/simple
[install]
trusted-host=mirrors.aliyun.com
requirements.txt
文件为所需要安装的库,内容如下
Django
创建docker-compose.yml
文件,为docker compose配置文件
services:
app:
restart: always
image: django-demo:1.0
container_name: django-demo
build: .
command: bash -c " python3 manage.py migrate && python3 manage.py runserver 0.0.0.0:8000"
volumes:
- .:/code
ports:
- "8000:8000"
[可选]开放镜像SSH
此项为可选项,为镜像开放SSH,使外部主句可以用SSH协议登录到镜像环境下
修改Dokcerfile
文件
# 基础镜像
FROM python:3.8
# 镜像作者
MAINTAINER Author
# 设置 python 环境变量
ENV PYTHONUNBUFFERED 1
# 创建 code 文件夹并将其设置为工作目录
RUN mkdir /code
WORKDIR /code
# ++++++++++++++++++++
# 安装 sudo ssh
RUN apt update
RUN apt install -y sudo
RUN apt install -y openssh-server
# 修改密码
RUN echo 'root:1720460527' | chpasswd
# 修改配置文件
RUN sed -i 's/#PermitRootLogin prohibit-password/PermitRootLogin yes/' /etc/ssh/sshd_config
RUN sed 's@sessions*requireds*pam_loginuid.so@session optional pam_loginuid.so@g' -i /etc/pam.d/sshd
RUN echo "export VISIBLE=now" >> /etc/profile
# ++++++++++++++++++++
# 更新 pip
RUN pip install pip -U
# 设置pip源为国内源
COPY pip.conf /root/.pip/pip.conf
# 将 requirements.txt 复制到容器的 code 目录
ADD requirements.txt /code/
# 安装库
RUN pip install -r requirements.txt
# 将当前目录复制到容器的 code 目录
# ADD . /code/
修改docker-compose.yml文件,在容器启动时自动启动ssh服务
version: "3"
services:
app:
restart: always
image: django-demo:1.0
container_name: django-demo
build: .
command: bash -c "service ssh start && python3 manage.py migrate && python3 manage.py runserver 0.0.0.0:8000"
volumes:
- .:/code
ports:
- "8000:8000"
- "8022:22"