【Docker学习系列教程】docker-compose介绍

有时候,我们会发现把所有的应用都放在一个容器里面非常不好管理,由此引入了docker-compose,可以实现多个容器结合整合使用,其实本质上docker-compose也是docker的一部分,只是对于linux需要另外安装,安装也是很简单的。

docker-compose使用主要分为三部分:

  1. 创建单个容器的Dockerfile,对应每个功能,例如:nginx可以写一个Dockerfile,redis也可写一个Dockerfile

  2. 利用外层的docker-compose.yaml 来组合容器,形成多容器应用,其中包含着各个容器之前的关系,这个文件遵循yaml配置文件的编写规范。(springboot也是用这种类型的文件配置)

  3. 使用docker-compose up来启动这个多容器应用

接下来,通过简单的实例来对docker-compose来理解,一些具体的知识这里不再介绍,可自行百度。

利用docker-compose组建ghost 博客系统

主要有nginx、ghost、mysql三个容器

1. 新建 ghost主文件夹,下面三个文件夹分别是ghost、nginx、data,还有一个docker-compose.yaml配置文件

ghost放ghost-app的Dockerfile文件和ghost的配置文件

ngxin放nginx的Dockerfile的文件和nginx的虚拟主机配置文件

data放mysql的数据文件

这个地方特别注意下,所有非静态数据都需要另外挂载出来,容器不会存储动态文件

2. 介绍下docker-compose.yaml配置文件

#此处需要和你的docker-compose版本一致,例如你的docker-compose版本为1.7.8 那么这个版本就是2
version: "2" 


networks:
  ghost:

#服务,主要用来整合容器,表明他们之前的关系
services:
  #二级标签是 ghost-app,这个名字是用户自己自定义,它就是服务名称。
  ghost-app:
    #基于一份 Dockerfile,在使用 up 启动之时执行构建任务,
    #这个构建标签就是 build,它可以指定 Dockerfile 所在文件夹的路径
    #这里就是找当前下的ghost文件夹
    build: ghost
    #加入指定网络
    networks:
      - ghost
    #容器的依赖、启动先后的问题,先启动依赖
    depends_on:
      - db
    ports:
      - 2368:2368

  nginx:
    build: nginx
    networks:
        - ghost
    depends_on:
        - ghost-app
    #宿主机会随机映射端口。
    ports:
        - 80:80
        - 88:88

  db:
    #指定服务的镜像名称或镜像 ID
    image: mysql:5.7.20
    networks:
      - ghost
    #设置镜像变量,它可以保存变量到镜像里面
    environment:
      MYSQL_ROOT_PASSWORD: mysqlroot
      MYSQL_USER: ghost
      MYSQL_PASSWORD: ghost
    #挂载一个目录或者一个已存在的数据卷容器,
    volumes:
      - ./data:/var/lib/mysql
    ports:
      - 3306:3306

上面的使用过的基本都解释了,其实里面还有很多,后续会单独对这个文件进行更加详细的介绍。

3. ghost文件夹内容

这个里面主要有个两个文件,一个自然是Dockerfile,另外一个就是ghost的应用配置文件

  • config.production.json
{
    "url": "http://localhost:2368/",
    "server": {
        "port": 2368,
        "host": "0.0.0.0"
    },
    "database": {
        "client": "mysql",
        "connection": {
            "host": "db",
            "user": "ghost",
            "password": "ghost",
            "database": "ghost",
            "port": 3306,
            "charset": "utf8"
        }
    },
    "mail": {
        "transport": "Direct"
    },
    "logging": {
        "transports": [
            "file",
            "stdout"
        ]
    },
    "process": "systemd",
    "paths": {
        "contentPath": "/var/lib/ghost/content"
    }
}

这个文件就不介绍了,不是本系列文章的重点,想了解的小伙伴可以去百度ghost博客

  • /ghost/Dockerfile
FROM ghost
COPY ./config.production.json /var/lib/ghost/content/config.production.json
EXPOSE 2368

这块的内容在之前的文章里面介绍到了,基本能看懂。不懂请翻阅之前的文章

4.data文件夹 主要用来挂载数据库信息,存放数据资料

5. nginx文件夹内容

主要有个两个文件 一个是Dockerfile文件,另外一个是nginx虚拟域名配置文件

  • /nginx/Dockerfile
FROM nginx:latest
COPY ./nginx.conf /etc/nginx/conf.d/ghost.conf #这个路径对应的nginx的vhost目录,会自动加载.conf的文件
EXPOSE 80
EXPOSE 88

这个地方特意暴露两个端口,是为了测试后面的虚拟域名

  • ghost.conf
server {
  listen 88;
  location / {
    proxy_pass http://ghost-app:2368; #ghost-app会自动从配置文件中获取
  }
}

到此我们的文件基本都写完了,不需要安装nginx 不需要安装数据库mysql,只需通过简单的配置就行了。

接下来我们看看怎么运行,

6. 运行这个多容器应用

  • 进入.yaml文件的同级目录,然后使用docker-compose build 就会开始构建这个多容器

  • 然后docker-compose up 启动这个多容器应用 加上-d参数就是后台运行,测试阶段建议不要-d 可以看到后台的一些信息。

7.介绍下docker-compose的一些常用命令

  • docker-compose build 构建

  • docker-compose stop 停止

  • docker-compose rm 删除

  • docker-compose up 启动

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容