首页 > 其他分享 >Docker笔记六之使用docker-compose运行系统

Docker笔记六之使用docker-compose运行系统

时间:2023-05-29 21:31:57浏览次数:53  
标签:compose Django env mysql Docker 9898 docker

本文首发于公众号:Hunter后端

原文链接:Docker笔记六之使用docker-compose运行系统

这一篇文章介绍一下 docker-compose 的用法。

前面我们介绍过,一个系统的正常运行除了 Django,还需要 MySQL、Redis、Nginx 等其他系统,那么我们就可以通过 docker-compose 来部署这些系统的运行。

包括这些系统的参数,运行先后顺序,容器启动策略,运行的命令等。

接下来介绍使用 Django 和 MySQL 通过 docker-compose 启动。

以下是本篇笔记的目录:

  1. 安装 docker-compose
  2. Dockerfile 准备
  3. docker-compose.yml 文件介绍
  4. docker-compose 相关命令

1、安装 docker-compose

我这边使用的是 Mac,安装的是 Docker 的桌面版,所以会自带 docker-compose 命令。

如果没有这个依赖,需要通过下面的命令来安装:

pip3 install -U docker-compose -i https://pypi.tuna.tsinghua.edu.cn/simple

2、Dockerfile 准备

Django 的 Dockerfile 我们复用前几篇笔记的内容,如下:

FROM python:3.6

RUN mkdir /hunter -p

WORKDIR /hunter


ADD ./requirements.txt /hunter

RUN cd /hunter
RUN pip3 install -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple


ADD ./hunter /hunter

CMD ["python3", "manage.py", "runserver", "0:9898"]

在该文件夹下有 requirements.txt,django_env_list.env,docker-compose.yml

requirements.txt 是之前我们导出的 Django 系统的依赖

django_env_list.env 文件是 Django 系统运行需要获取的环境变量

我们还需要新建一个 docker-compose.yml 文件,这个文件的作用在于规划和定义我们的系统及依赖的一些其他系统启动容器时的启动命令。

这次我们仅仅是 Django 和 MySQL 相依赖

3、docker-compose.yml 文件介绍

docker-compose.yml 文件内容如下:

version: '3.3'
services:
  mysql:
    image: "mysql:5.7"
    volumes:
      - "/.../docker-mysql-data:/var/lib/mysql"
    ports:
      - "23306:3306"
    environment:
      MYSQL_ROOT_PASSWORD: "123456"
  web:
    restart: always
    build: .
    command: bash -c "python3 manage.py migrate && python3 manage.py runserver 0:9898"
    ports:
      - "9898:9898"
    env_file:
      - django_env_list.env

services

services 的下一个层级定义的是需要运行的容器,比如 MySQL 服务,Django 服务,这里我们将 Django 服务命名为 web

mysql

以 mysql 下的参数为例:

  • image 通过镜像名称和 tag 来指定需要运行的镜像
  • volumes 则是挂载的命令,这一点与容器运行时候的参数是一致的
  • ports 是端口映射
  • environment 是环境变量

web

  • restart 是该容器的重启策略,always 表示会一直重启,比如说有时候没有指定其他服务的启动顺序,启动 Django 的时候,其他 Django 依赖的服务还没有起来,always 就保证了 Django 会在这个过程中可以不断重启
  • build 跟镜像的构建命令一样,在当前文件夹下寻找 Dockerfile 然后构建镜像
  • command 则指定了容器启动时候的命令,这里表示使用 bash 命令运行 Django 的 migration 的运行和服务的启动
  • env_file 是指定环境变量,容器启动时指定了环境变量列表

接下来介绍一下 django_env_list.env 文件的更改

文件内容如下:

ENGINE=django.db.backends.mysql
NAME=func_test
USER=root
PASSWORD=123456
HOST=mysql
PORT=3306

这里只有 HOST 的值有变化,这里面的值为 mysql,也就是在 docker-compose.yml 里我们定义的数据库的名称。

4、docker-compose 相关命令

然后我们执行下面的命令,可以看到我们定义的变量都已经读取到了文件内容:

docker-compose config

并且一些变量都进行了格式化处理:

services:
  mysql:
    environment:
      MYSQL_ROOT_PASSWORD: '123456'
    image: mysql:5.7
    ports:
    - published: 23306
      target: 3306
    volumes:
    - /.../docker-mysql-data:/var/lib/mysql:rw
  web:
    build:
      context: /.../python
    command: bash -c "python3 manage.py migrate && python3 manage.py runserver 0:9898"
    environment:
      ENGINE: django.db.backends.mysql
      HOST: mysql
      NAME: func_test
      PASSWORD: '123456'
      PORT: '3306'
      USER: root
    ports:
    - published: 9898
      target: 9898
    restart: always
version: '3.3'

docker-compose 服务启动:

docker-compose up 

然后就可以看到输出信息,服务就起来了

如果是想要 docker-compose 在后台运行,可以加上 -d 参数:

docker-compose up -d

如果想要停止该项目,可以在新开的 shell 中执行:

docker-compose down

标签:compose,Django,env,mysql,Docker,9898,docker
From: https://blog.51cto.com/u_16061969/6374042

相关文章

  • 1.docker简介与常用命令
    1.简介1.1.介绍Docker是基于Go语言实现的云开源项目。Docker的主要目标是Build,ShipandRunAnyApp,Anywhere,也就是通过对应用组件的封装、分发、部署、运行等生命周期的管理,使用户的APP(可以是一个WEB应用或数据库应用等等)及其运行环境能够做到“一次镜像,处处运行”。Docker......
  • docker 安装 Redis环境
    一、Docker搜索redis镜像命令:dockersearch<镜像名称>dockersearchredis二、Docker拉取镜像命令::dockerpull<镜像名称>:<版本号>dockerpullredis三、Docker挂载配置文件接下来就是要将redis的配置文件进行挂载,以配置文件方式启动redis容器。(挂载:即将宿主的文件......
  • docker 实例网络异常占用
    首先删除无效容器或(如果您使用的是docker-composedockercontainerrm<container>docker-composerm<service>docker-compose)确保容器已消失:或者输出中不得有此类容器dockercontainerls|grep<container>docker-composeps|grep<container>现在它可能仍连接到网络,因此......
  • onlyoffice - docker 安装
    docker安装请参考这篇随笔【  https://www.cnblogs.com/c2g5201314/p/17440979.html  】1.安装docker安装onlyoffice镜像sudodockerpullonlyoffice/documentserver等待,直到出现 查看镜像,发现多了个 说明安装成功2.启动dockerrun-i-t-d-p8001:8......
  • win10 卸载docker 干净
    百度搜到的不多,看了这一篇,测试可行感谢https://blog.csdn.net/weixin_41517074/article/details/128653118$ErrorActionPreference="SilentlyContinue"kill-force-processname'DockerforWindows',com.docker.db,vpnkit,com.docker.proxy,com.docker.9pdb,mo......
  • docker部署ZeLog项目(Tomcat+MySQL+ZrLog)
    一.docker的安装1.1、在安装dockers之前,建议关闭Centos7.9防火墙[root@192~]#systemctlstopfirewalld[root@192~]#setenforce0 setenforce是Linux的selinux防火墙配置命令执行setenforce0表示临时关闭selinux防火墙1.2、通过yum在线安装Docker服务[root@localhos......
  • docker-oracle;配置oracle
    地址:172.18.0.170root/cssjkyhs/yhs0527le一、安装检查uname-r:查看centos版本,root登录,如果不是root,需要前面加sudo如果之前有安装,卸载:yumremovedockerdocker-commondocker-selinuxdocker-engine二、安装docker安装需要的软件包,yum-util提供......
  • Docker php安装扩展步骤详解
    前言此篇,主要是演示docker-php-source,docker-php-ext-install,docker-php-enable-docker-configure这四个命令到底是用来干嘛的,它们在PHP容器中都做了哪些事情。很多人很不理解在Dockerfile中安装PHP扩展的时候总是出现这几个命令,本篇就就是为你揭开这些命令的神秘面纱而准......
  • docker删除网络报错:Error response from daemon: error while removing network
    在安装harbor发现docker的network已经存在了然后直径ls去查看发现存在如下,然后去rm删除的时候发现删不掉[root@st-test-hemu-harbor-2harbor]<2023052911:37:11>#dockernetworklsNETWORKIDNAMEDRIVERSCOPE35b4409d8f79bridge......
  • 500行代码手写docker-实现硬件资源限制cgroups
    (5)500行代码手写docker-实现硬件资源限制cgroups本系列教程主要是为了弄清楚容器化的原理,纸上得来终觉浅,绝知此事要躬行,理论始终不及动手实践来的深刻,所以这个系列会用go语言实现一个类似docker的容器化功能,最终能够容器化的运行一个进程。本章的源码已经上传到github,地址如......