docker部署简易Django项目(详细入门教程)

百度找来的博客,关于docker部署Django的博客一大堆,但是可以说都是垃圾,要么语焉不详、讲的不明不白,要么排版极烂,一看就是复制粘贴,看了也只是浪费时间、自找麻烦。下面的教程是官方教程的翻译和实践(采坑),写的十分详尽,保证一步步全部解释清楚,实验环境为ubuntu18。

参考官方教程Quickstart: Compose and Django

一、前提准备

1、安装docker

参考 https://github.com/zhongzhh8/Notes/blob/master/docker.md

#安装docker=====
apt install curl
curl -fsSL https://get.docker.com -o get-docker.sh
sudo sh get-docker.sh

#验证docker是否安装成功=====

#查看docker服务是否启动:
systemctl status docker
#若未启动,则启动docker服务:
sudo systemctl start docker
#测试经典的hello world:
sudo docker run hello-world

2、安装docker compose

参考 Docker-Compose介绍、安装及使用

#安装
curl -L https://get.daocloud.io/docker/compose/releases/download/1.25.0/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose
chmod +x /usr/local/bin/docker-compose

#验证
docker-compose -v

二、创建项目&配置docker

1、创建项目目录

创建一个空的项目目录,该目录的内容将用于构建应用的镜像

cd /home
mkdir Try_Docker_Project

项目目录为/home/Try_Docker_Project

2、创建Dockerfile文件

在项目目录下创建Dockerfile文件,它描述了如何构建这个web应用的镜像。

FROM python:3
ENV PYTHONUNBUFFERED 1
RUN mkdir /code
WORKDIR /code
COPY requirements.txt /code/
RUN pip install -i https://pypi.doubanio.com/simple/ -r requirements.txt
COPY . /code/

注意这里面我在语句RUN pip install -i https://pypi.doubanio.com/simple/ -r requirements.txt 里换源使用豆瓣源,目的是安装更快(否则很慢而且有可能因为下载超时而失败)

Dockerfile首先是pull一个python3的镜像作为基础进行修改,接着创建一个code目录作为工作目录,将文件requirements.txt复制到code目录下,然后安装requirements.txt中包含的库。最后再把当前项目目录下所有内容复制到code目录下。

3、创建requirements.txt文件

在项目目录下创建requirements.txt文件:

Django>=2.0,<3.0
psycopg2>=2.7,<3.0

4、创建docker-compose.yml文件

version: '3'

services:
  db:
    image: postgres
  web:
    build: .
    command: python manage.py runserver 0.0.0.0:8000
    volumes:
      - .:/code
    ports:
      - "8000:8000"
    depends_on:
      - db

docker-compose.yml文件描述了web应用所需的服务,在这里需要用到的是一个web服务和一个数据库服务。

docker-compose.yml文件还描述了使用的是哪个Docker镜像、如何将它们关联起来、需要将哪些volumes挂载到容器上以及服务的端口映射关系。

三、创建Django项目

在这一部分,将会通过上面的项目文件来创建一个Django镜像、然后运行成一个容器。

1、docker-compose run

在项目目录下,运行命令

sudo docker-compose run web django-admin startproject composeexample .

注意如果原本就已经是root用户,就不需要使用sudo,否则安装Django部分是会出错。

参考https://stackoverflow.com/questions/34759264/the-command-bin-sh-c-sudo-pip3-install-r-requirements-txt-returned-a-non-ze

这条命令,首先会根据docker-compose.yml文件构造web服务,由于web服务依赖于db服务,所以先构建postgres的镜像,然后构建web的镜像,由于相关命令是build: .,因此会根据项目目录下的Dockerfile文件来构建web的镜像,按照Dockerfile文件中的语句逐个执行。最终会生成两个镜像(其实还有个python):

在这里插入图片描述

一旦创建了web的服务镜像,docker-compose就会把它运行成一个容器,并且在容器中执行django-admin startproject composeexample命令创建一个名为composeexample的项目。

参考Django 创建第一个项目——菜鸟教程

此时项目目录下的内容为:

在这里插入图片描述

2、连接数据库

这里需要修改composeexample/settings.py文件的配置,但是由于赶时间,而且暂时不需要用到数据库,所以直接跳过这一步。

3、启动项目

在项目目录下执行命令:

docker-compose up

这样Django应该就会在8000端口上运行了,打开浏览器访问localhost:8000

在这里插入图片描述

查看运行的容器

docker ps

在这里插入图片描述

4、关闭Django服务

直接Ctrl+C

发布了131 篇原创文章 · 获赞 12 · 访问量 3万+

猜你喜欢

转载自blog.csdn.net/weixin_41519463/article/details/103761824