实务上,一个服务往往可以拆解成数个微服务组成。以市占相当高的 Wordpress 内容管理系统 CMP 为例,其可拆解成 mysql 和 wordpress 。如果你要一个个独自将这些微服务容器建立起来,着实会花上不少时间,且也易造成重工和迁移不易的问题。Docker Compose 可以方便管理者控制容器间的关系,藉由撰写设定档的方式,减少重复的工时且一并将相关的系列参数给写入。
Dockerfile 定义的是单一映像 ( Image ) 的建立步骤过程;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 的组态 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)
大家好,我是西瓜,你现在看到的是 2021 iThome 铁人赛『如何在网页中绘制 3D 场景?从 ...
FGL程序运行时可用的画面已经可做出来了,但总不能只是拿来 DISPLAY TO 资料,应该要拿来...
记录学习内容。看网路上大大们的文章和影片,做些纪录。 还不了解,内容可能有错误。 Longest I...
常见的 HTML elements 标题 headings 在 VS code 中输入以下程序码 &...
前言 该系列是为了让看过Vue官方文件或学过Vue但是却不知道怎麽下手去重构现在有的网站而去规画的系...