Docker/Docker-Compose部署Django前后不分离开发

  1. 什么是Dockerfile
    类似于脚本,将docker镜像,使用自动化的方式实现出来。

  2. Dockerfile的作用
    ​ 找一个镜像: ubuntu

    ​ 创建一个容器: docker run ubuntu

    ​ 进入容器: docker exec -it 容器 命令

    ​ 操作: 各种应用配置

    ​ …

    ​ 构造新镜像: docker commit

  3. Dockerfile使用准则
    1.大: 首字母必须大写D

    2.空: 尽量将Dockerfile放在空目录中。

    3.单: 每个容器尽量只有一个功能。

    4.少: 执行的命令越少越好。

1.Dockerfile使用命令

构建镜像命令格式:docker build -t [镜像名]:[版本号][Dockerfile所在目录]
构建样例:docker build -t nginx:v0.2 /opt/dockerfile/nginx/
参数详解:-t 指定构建后的镜像信息,
/opt/dockerfile/nginx/则代表Dockerfile存放位置,如果是当前目录,则用 .(点)表示
#Dockerfile快速入门

docker,docker-compose安装

第一步

切换yum源:
https://blog.csdn.net/wangshuminjava/article/details/84380308
https://blog.csdn.net/qq_39157144/article/details/94717837

第二步

1. 安装docker
Centos:https://www.runoob.com/docker/centos-docker-install.html
Ubuntu:https://www.cnblogs.com/leoshi/archive/2004/01/13/12742276.html
2.安装docker-compose
下载地址:http://get.daocloud.io/
apt地址:https://blog.csdn.net/diligent_lee/article/details/79098302

第三步

  1. 把项目放到服务器上
    比如: 在 home 目录下建一个 root文件夹,把项目放在里面

在项目应用目录下建 Dockerfile 文件

 从仓库拉取 带有 python 3.7 的 Linux 环境FROM python:3.7设置 python 环境变量ENV PYTHONUNBUFFERED 1添加这两行RUN apt-get updateRUN apt-get install python3-dev default-libmysqlclient-dev -y创建 code 文件夹并将其设置为工作目录RUN mkdir /codeWORKDIR /code更新 pipRUN pip install pip -U -i https://mirrors.aliyun.com/pypi/simple/将 requirements.txt 复制到容器的 code 目录ADD requirements.txt /code/安装库 并使用阿里源安装RUN pip install -r requirements.txt -i https://mirrors.aliyun.com/pypi/simple/将当前目录复制到容器的 code 目录ADD . /code/
FROM python:3.7 指令从仓库拉取一个包含 python 3.7 的 Linux 操作系统环境
RUN 和 WORKDIR 指令都是针对容器的,功能是在docker容器里创建目录、并将其设置为工作目录;注意宿主机是没有这个目录的
ADD requirements.txt /code/ 意思是将宿主机当前目录(即 Dockerfile 所在目录)的 requirements.txt 文件复制到容器的 /code 目录中
ADD . /code/ 把当前目录所有内容复制到容器 /code/ 目录,注意中间那个点

2. 在项目根目录下建 docker-compose.yml文件

version: "3"
services:app:restart: alwaysbuild: .  # '点'代表当前目录dockerfile:./c/d/Dockerfilecommand: "python3 manage.py runserver 0.0.0.0:8000"volumes:- .:/codeports:- "8000:8000"depends_on:- dbcontainer_name: docker-web-containerdb:image: mysql:5.7volumes:- "./mysql:/var/lib/mysql"ports:- "3306:3306"restart: alwaysenvironment:- MYSQL_ROOT_PASSWORD=mypassword- MYSQL_DATABASE=django_app
version 代表 docker-compose.yml 的版本,目前最新版为 3
restart 除正常工作外,容器会在任何时候重启,比如遭遇 bug、进程崩溃、docker 重启等情况
build 指定一个包含Dockerfile的路径,并通过此 Dockerfile 来构建容器镜像。注意那个 “.” ,代表当前目录
dockerfile 如果需要指定额外的编译镜像的Dockefile 文件,可以通过该指令来指定。
command 容器运行时需要执行的命令。这里就是我们很熟悉的运行开发服务器了。
volumes 卷,这是个很重要的概念。宿主机和容器目录的映射。
ports 定义了宿主机和容器的端口映射;宿主机端口映射到本容器的端口
depends_on 意思是此容器需要等待 db 容器启动完毕才能够启动
image 从仓库拉取 MySQL 5.7镜像。可以自己定版本
container_name 指定容器名称。默认将会使用 项目名称_服务名称_序号 这样的格式。 需要注意,指定容器名称后,该服务将无法进行扩展,因为 Docker 不允许多个容器具有相同的名称
environment 定义容器的环境变量,设置了 MySQL 的 root 用户的密码、数据库的名称。
详细链接 https://blog.csdn.net/jiangyu1013/article/details/82772363

3.修改Django的setting.py中数据库的配置

DATABASES = {'default': {'ENGINE': 'django.db.backends.mysql','NAME': 'django_app','USER': 'root','PASSWORD': 'mypassword','HOST': 'db', #注意 HOST 填写的是docker容器的名称,即 db 'PORT': '3306','OPTIONS': {'charset': 'utf8'},}
}

3. 运行docker

docker-compose up

4.安装nginx

1.安装nginx

yum install nginx

2.进入nginx的目录

cd /etc/nginx/conf.d

3.编辑你的前端项目配置

vi your_name.conf

your_name.conf 是自己随便取的名字,只要是xxx.conf就行

server {listen 80;server_name localhost; #有域名放域名,没域名就是 localhostlocation / {root /wwwroot/h5; #这里放前端项目目录地址index index.html;}
}
保存退出编辑

使用dockerfile/docker-compose部署。

1.确定项目的服务,比如mysql,redis,nginx等…

2. 为各个服务编写dockerfile。

  • Nginx --> Dockerfile

    FROM nginx:本版
    RUN rm -rf /etc/nginx/nginx.conf
    COPY ./compose/production/nginx/nginx.conf /etc/nginx/
    
  • Redis --> Dockerfile
    FROM redis:本版
    
  • Web服务 --> Dockerfile
FROM python:本版
RUN apt-get update && \apt-get install -y openssl build-essential libopenblas-dev \netcat \gettextENV PYTHONDONTWRITEBYTECODE 1ENV PYTHONUNBUFFERED 1RUN  mkdir /appCOPY . /appEXPOSE 8000WORKDIR /appENV PIPENV_VENV_IN_PROJECT 1RUN pip install -r requirments.txt
这个位置要看项目具体使用什么服务,可能需要其他sh文件来启动,或者是初始化。
  • db

    数据库位置比较麻烦
    FROM postgres:11COPY ./compose/postgresql.conf /postgresql.conf  #读取数据库配置COPY ./compose/postgres/backup.sh /usr/local/bin/backup
    RUN chmod +x /usr/local/bin/backupCOPY ./compose/postgres/restore.sh /usr/local/bin/restore
    RUN chmod +x /usr/local/bin/restoreCOPY ./compose/postgres/list-backups.sh /usr/local/bin/list-backups
    RUN chmod +x /usr/local/bin/list-backups
    

3.使用Docker-compose管理

version: '2'
services:nginx:build:context: .dockerfile: Nginx的dockerfile文件位置restart: unless-stoppedcontainer_name: nginxports:- "8001:8001"- "8000:8000"volumes:- .:/app- .nginx的配置文件位置和Docker映射位置,如同redis的volumesdepends_on:- webweb:build:context: .dockerfile: web的dockerfile文件位置restart: unless-stoppedcontainer_name: djangocommand: bash -c "python manage.py migrate && python manage.py collectstatic --noinput && python manage.py createdefault && gunicorn mysite.wsgi --worker-class=gevent -b 0.0.0.0:8000 -w 4"depends_on:- db- redisvolumes:- .:/appexpose:- "8000"env_file: .envdb:build:context: .dockerfile:db的dockerfile文件位置restart: unless-stoppedcontainer_name: postgresvolumes:- 配置文件映射位置     ports:- "1234:1234"  # 可以自定义env_file: .envredis:image: redis:3.0restart: unless-stoppedcontainer_name: rediscommand: redis-server /usr/local/etc/redis/redis.confvolumes:- ./redis/redis.conf:/usr/local/etc/redis/redis.conf  映射位置

最后使用docker-compose build开始创建和启动你的docker服务。

Docker/Docker-Compose部署Django相关推荐

  1. 使用Docker本机部署Django项目

    前言 因为项目环境配置太麻烦了,所以还是选用了Docker这个技术作为一个部署的解决方案. 这里主要讲如何用Docker启动一个Django项目,所以一些高级的部署方式,比如说用nginx管理等都没有 ...

  2. Docker部署Django由浅入深系列(中): 双容器部署Django + Uwsgi + Nginx

    本文是使用Docker部署Django由浅入深系列的中篇,我们将构建两个容器,一个容器放Django + Uwsgi,另一个容器放Nginx.我们将了解不同容器间是如何通信的,并学会正确配置uwsgi ...

  3. [转]Docker部署Django由浅入深系列(下): 八步部署Django+Uwsgi+Nginx+MySQL+Redis

    在上篇教程中,我们手动构建了两个容器,一个容器放Django + Uwsgi,另一个容器放Nginx,成功部署了一个简单的Django项目.然而在实际的生产环境中,我们往往需要定义数量庞大的 dock ...

  4. docker compose部署服务

    1 用docker compose部署服务 - 需求:假如现在我们手里有很多容器,每个容器对应每个服务,有nginx容器,redis容器,mysql容器等.现在我们需要批量化的去管理,批量启动,停止, ...

  5. 使用Docker Compose 部署Nexus后提示:Unable to create directory /nexus-data/instance

    场景 Ubuntu Server 上使用Docker Compose 部署Nexus(图文教程): https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/ ...

  6. 使用Docker Compose 部署Nexus后初次登录账号密码不正确,并且在nexus-data下没有admin.password

    场景 Ubuntu Server 上使用Docker Compose 部署Nexus(图文教程): https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/ ...

  7. Ubuntu Server 上使用Docker Compose 部署Nexus(图文教程)

    场景 Docker-Compose简介与Ubuntu Server 上安装Compose: https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/deta ...

  8. Docker Compose部署Nexus3时的docker-compose.yml代码

    场景 Docker-Compose简介与Ubuntu Server 上安装Compose: https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/deta ...

  9. 从零开始一步一步搭建Ubuntu Server服务器、修改数据源、安装Docker、配置镜像加速器、Compose部署Gitlab服务

    场景 最终目的是使用Docker Compose部署一个Gitlab服务. 效果 注: 博客: https://blog.csdn.net/badao_liumang_qizhi 关注公众号 霸道的程 ...

最新文章

  1. vue 使用font-awesome
  2. 每日源码分析-Lodash(uniq.js)
  3. Haskell 函数式编程快速入门【草】
  4. 海外投行抢滩大数据 人工智能等领域趋热
  5. python 深拷贝_Python之类的浅拷贝与深拷贝
  6. MySQL的库表详细操作
  7. OGEngine基于java支持跨平台的手游开发开源引擎
  8. pat 乙级 1006 换个格式输出整数(C++)
  9. android studio panic,Android Studio模拟器PANIC错误
  10. MarkDown总结(适合初学者快速入门)
  11. kubernetes 磁盘、PV、PVC
  12. 问题解决:./config.sh: line 103
  13. xxl-job使用笔记
  14. 阶段3 2.Spring_07.银行转账案例_10 使用动态代理实现事务控制
  15. Word-去掉标题前面的小黑点
  16. poj 3295 Tautology【离散数学之重言式】
  17. Matlab IQR准则剔除异常值
  18. 48搜索相关参数梳理以及bouncing results问题解决方案
  19. orcale中like用法详解
  20. MySQL连接查询——连接查询的综合应用

热门文章

  1. 清华化学北航学计算机怎么选填志愿,2017年清华、北航多校采用大类招生,高考志愿该如何填报?...
  2. 如何避免黑客攻击?国内首个云端加密代码库来帮忙
  3. 如虎添翼 7 个转场技巧
  4. html5 打气球小游戏,javascript开发打气球小游戏
  5. PDF电子签名申请与设置方法
  6. C7N新增,保存,删除基础模板
  7. 多功能纺织品易燃性测试仪市场现状及未来发展趋势
  8. python rasterio库和gdal库匹配与冲突问题安装办法
  9. 【极简笔记】VPGNet: Vanishing Point Guided Network for Lane and Road Marking Detection and Recognition
  10. C++将一个无效参数传递给了将无效参数视为严重错误的函数