本节主要学习Docker-Compose。
Compose 简介
Compose 是用于单宿主机定义和运行多容器 Docker 应用程序的工具。通过 Compose,您可以使用 YML 文件来配置应用程序需要的所有服务。然后,使用一个命令,就可以从 YML 文件配置中创建并启动所有服务。
Compose 使用的三个步骤:
- 使用 Dockerfile 定义应用程序的环境。
- 使用 docker-compose.yml 定义构成应用程序的服务,这样它们可以在隔离环境中一起运行。
- 最后,执行 docker-compose up 命令来启动并运行整个应用程序。
Compose 安装
官方文档:https://docs.docker.com/compose/install/
WIN/MAC 默认提供 Docker Compose,Linux 需安装
1、运行以下命令以下载 Docker Compose 的当前稳定版本:
sudo curl -L "https://github.com/docker/compose/releases/download/1.29.1/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
————————————————————————————————
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 633 100 633 0 0 1100 0 --:--:-- --:--:-- --:--:-- 1098
100 12.1M 100 12.1M 0 0 1993k 0 0:00:06 0:00:06 --:--:-- 2643k
2、将可执行权限应用于二进制文件:
sudo chmod +x /usr/local/bin/docker-compose
3、测试安装结果:
docker-compose --version
————————————————————————————————
docker-compose version 1.29.1, build c34c88b2
这样 docker-compose 就安装好了~
通过 Docker-Compose 安装 Wordpress
1、创建一个空的项目目录 my-wordpress,切换至该目录。
cd /usr/local/projectes
mkdir my-wordpress
cd my-wordpress
2、创建一个 docker-compose.yml 文件来启动 WordPress 博客,并创建一个单独的 MySQL 实例,该实例具有用于数据持久性的卷挂载:
vim docker-compose.yml
#内容如下:
version: "3.9"
services:
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
ports:
- "9999:80"
restart: always
environment:
WORDPRESS_DB_HOST: db:3306
WORDPRESS_DB_USER: wordpress
WORDPRESS_DB_PASSWORD: wordpress
WORDPRESS_DB_NAME: wordpress
volumes:
db_data: {}
3、运行项目
docker-compose up -d
——————————————————————————————————
Creating network "my-wordpress_default" with the default driver
Creating volume "my-wordpress_db_data" with default driver
Pulling db (mysql:5.7)...
5.7: Pulling from library/mysql
f7ec5a41d630: Pull complete
9444bb562699: Pull complete
6a4207b96940: Pull complete
181cefd361ce: Pull complete
8a2090759d8a: Pull complete
15f235e0d7ee: Pull complete
d870539cd9db: Pull complete
cb7af63cbefa: Pull complete
151f1721bdbf: Pull complete
fcd19c3dd488: Pull complete
415af2aa5ddc: Pull complete
Digest: sha256:a655529fdfcbaf0ef28984d68a3e21778e061c886ff458b677391924f62fb457
Status: Downloaded newer image for mysql:5.7
Pulling wordpress (wordpress:latest)...
latest: Pulling from library/wordpress
f7ec5a41d630: Already exists
941223b59841: Pulling fs layer
a5f2415e5a0c: Pulling fs layer
b9844b87f0e3: Pulling fs layer
5a07de50525b: Pull complete
caeca1337a66: Pull complete
5dbe0d7f8481: Pull complete
b5287b60e185: Pull complete
a3bdca77fbaf: Pull complete
e3edcade6aa2: Pull complete
703ba034e6f0: Pull complete
36ef47972442: Pull complete
4acb239a9263: Pull complete
e74d610ba693: Pull complete
97f505d02f6f: Pull complete
d6dd6701aaec: Pull complete
43ef3ceb4f4b: Pull complete
a59b940a007f: Pull complete
714359ef8f41: Pull complete
24b7e9a8c62d: Pull complete
b400ea29ad59: Pull complete
Digest: sha256:208def35d7fcbbfd76df18997ce6cd5a5221c0256221b7fdaba41c575882d4f0
Status: Downloaded newer image for wordpress:latest
Creating my-wordpress_db_1 ... done
Creating my-wordpress_wordpress_1 ... done
至此 WordPress 安装完成~
4、查看容器
docker ps
——————————————————————————————————
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
36188bfa4e7d wordpress:latest "docker-entrypoint.s…" 30 minutes ago Up 30 minutes 0.0.0.0:9999->80/tcp, :::9999->80/tcp my-wordpress_wordpress_1
cc0bb8d128fe mysql:5.7 "docker-entrypoint.s…" 30 minutes ago Up 30 minutes 3306/tcp, 33060/tcp my-wordpress_db_1
我们看到它构建两个容器,一个 wordpress,一个 mysql。
总结
本节我们学习了 Docker-Compose,并用其构建了一个 WordPress 项目。
但是 Docker-Compose 仅限于单宿主机使用,在多主机集群中我们还是得采用 Swarm、K8S 等。
评论区