Docker部署Django

创建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"
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容