【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 启动

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 216,591评论 6 501
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,448评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 162,823评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,204评论 1 292
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,228评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,190评论 1 299
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,078评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,923评论 0 274
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,334评论 1 310
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,550评论 2 333
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,727评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,428评论 5 343
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,022评论 3 326
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,672评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,826评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,734评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,619评论 2 354

推荐阅读更多精彩内容