Day 18 Docker Compose 简介和安装

实务上,一个服务往往可以拆解成数个微服务组成。以市占相当高的 Wordpress 内容管理系统 CMP 为例,其可拆解成 mysql 和 wordpress 。如果你要一个个独自将这些微服务容器建立起来,着实会花上不少时间,且也易造成重工和迁移不易的问题。Docker Compose 可以方便管理者控制容器间的关系,藉由撰写设定档的方式,减少重复的工时且一并将相关的系列参数给写入。

Docker Compose 和 Dockerfile 的异同

Dockerfile 定义的是单一映像 ( Image ) 的建立步骤过程;Docker Compose 则定义了藉由映像所组成的容器间的依赖关系、容器的启动方式和相关参数

安装 Docker Compose

Docker Compose 目前的 Repository 是位於 Github 上,可以点选 这边 前往。由於先前是运用 Linode 租用的 Debian 虚拟主机,所以透过命令列的方式来进行安装:

# 1. 先确认你是否安装过 curl
sudo apt update && sudo apt upgrade
sudo apt install curl
# 2. 从官方 Repo 取得最新的 docker compose
curl -L https://github.com/docker/compose/releases/download/1.29.2/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose # 记得给予权限执行

docker-compose.yml

这是 Docker Compose 的组态 Config 预设档,看起来会像是这个样子:

# Wordpress official demo on docs.docker.com
version: "3.9" # docker compose 解析规则版本
    
services: # 定义专案组成,由 db, wordpress 两个服务组成。这两个名称是自订的
  db:
    image: mysql:5.7
    volumes:
      - db_data:/var/lib/mysql
    restart: always
    environment: # 参数可定义在这边
      MYSQL_ROOT_PASSWORD: somewordpress
      MYSQL_DATABASE: wordpress
      MYSQL_USER: wordpress
      MYSQL_PASSWORD: wordpress
    
  wordpress:
    depends_on: # 服务间的依赖性
      - db
    image: wordpress:latest # 要取用哪个映像档
    volumes:
      - wordpress_data:/var/www/html
    ports:
      - "8000:80"
    restart: always
    environment:
      WORDPRESS_DB_HOST: db:3306
      WORDPRESS_DB_USER: wordpress
      WORDPRESS_DB_PASSWORD: wordpress
      WORDPRESS_DB_NAME: wordpress
volumes: # 别忘记建立 volume,因为你在 db 和 wordpress 间有定义相关的 volumes
  db_data: {}
  wordpress_data: {}

<<:  Day18 - 如何在页面中预先载入其他的页面 (prefetch)

>>:  #17-不用套件让网站Logo动起来~(SVG SMIL)

Varying - fragment shader 之资料

大家好,我是西瓜,你现在看到的是 2021 iThome 铁人赛『如何在网页中绘制 3D 场景?从 ...

[FGL] 程序开发(2) - 4类6个交谈指令-功能选单部分

FGL程序运行时可用的画面已经可做出来了,但总不能只是拿来 DISPLAY TO 资料,应该要拿来...

Longest Increasing Subsequence (最长递增子序列)

记录学习内容。看网路上大大们的文章和影片,做些纪录。 还不了解,内容可能有错误。 Longest I...

Day5 HTML 语法简易介绍(二)

常见的 HTML elements 标题 headings 在 VS code 中输入以下程序码 &...

[重构倒数第29天] - Vue2 Option API 转换 Vue3 Composition API

前言 该系列是为了让看过Vue官方文件或学过Vue但是却不知道怎麽下手去重构现在有的网站而去规画的系...