Docker Compose是Docker官方的开源项目,是一个用于定义和运行多容器Docker应用程序的工具。
docker-compose.yml
文件是 Docker Compose 的核心配置文件,用于定义和运行多容器 Docker 应用程序。
这个文件遵循 YAML
格式,包含了一系列关于服务、网络、卷等配置的信息。
以下是一个基本的 docker-compose.yml 文件示例,以及一些关键字段的解释:
version:'3.8' # 指定 Compose 文件的格式版本
services: # 定义服务(容器)的列表
web:
image: nginx:latest # 指定容器使用的镜像
ports:-"80:80" # 将主机的80端口映射到容器的80端口
volumes:-./html:/usr/share/nginx/html # 将主机的./html目录挂载到容器的/usr/share/nginx/html目录
networks:- mynetwork # 指定容器使用的网络
db:
image: mysql:5.7
environment:
MYSQL_ROOT_PASSWORD: example # 设置环境变量
volumes:- db_data:/var/lib/mysql # 使用命名卷存储数据库数据
networks:- mynetwork
networks: # 定义自定义网络
mynetwork:
driver: bridge # 使用桥接网络模式
volumes: # 定义命名卷
db_data:
在这个示例中:
注意,YAML 文件对缩进非常敏感,因此请确保每个字段都正确缩进。
此外,根据实际需求,您可以添加更多配置选项或自定义服务、网络和卷。
详细参考官方文档:https://docs.docker.com/reference/compose-file/version-and-name/
详细参考官方文档:https://docs.docker.com/reference/cli/docker/compose/
创建一个目录并进入到该目录下:
mkdir -p /data/ahri/compose/base
cd /data/ahri/compose/base
创建一个yml文件
vi docker-compose.yml
编写配置文件,注意,格式一定要正确
name:test_compose
services:
web:
image: nginx:1.24.0
environment:
TEST:1
ports:-8979:80
networks:- mytestnet
volumes:-./mynginxhome:/usr/share/nginx/html
depends_on:
mysql:
condition: service_healthy
redis:
condition: service_healthy
mysql:
image: mysql:5.7
environment:
MYSQL_ROOT_PASSWORD:"bit@123"
networks:- mytestnet
volumes:-/data/maxhou/mysqldata/varlib/:/var/lib/mysql
healthcheck:
test: mysql --user=root --password='bit@123'-e "SELECT 1;"
interval:10s
timeout:5s
retries:10
redis:
image: redis:7
networks:- mytestnet
healthcheck:
test: redis-cli ping
interval:10s
timeout:5s
retries:10
networks:
mytestnet:
通过该命令查看配置文件是否出现错误:
docker compose config
创建首页目录,编辑首页内容:
mkdir -p ./mynginxhome
cd ./mynginxhome
echo "Test Docker Compose"> index.html
启动服务:
docker compose up -d
查看运行的容器:
通过浏览器测试访问:
进入nginx容器查看环境变量TEST:
docker exec -it test_compose-web-1 bash
停止服务:
docker compose stop
启动服务:
docker compose start
删除服务:
docker compose down
当前项目的命名:
设置镜像为nginx:1.23.4 ,环境变量为TEST,端口映射为8080,连接网络为mytestnet,映射卷为mynginxhome;
依赖关系分别是mysql和redis;condition可以设置满足依赖项条件;
mysql和redis启动前都会进行健康检查,只有健康了才满足该条件;
镜像为mysql:5.7 ,并设置密码;连接网络mytestnet;映射卷为varlib;
healthcheck就是健康检查:通过test进行测试,规定时间为10s;错误超时不过5s,重试次数为10 ;
redis也是跟mysql配置服务相同;
通过networks来创建一个docker network.
WordPress 是使用 PHP 语言开发的博客平台,用户可以在支持 PHP 和 MySQL 数据库的服务器上架设属于自己的网站。也可以把 WordPress 当作一个内容管理系统(CMS)来使用。
WordPress 是一款个人博客系统,并逐步演化成一款内容管理系统软件,它是使用PHP 语言和 MySQL 数据库开发的,用户可以在支持 PHP 和 MySQL 数据库的服务器上使用自己的博客。
1.编写yml配置文件
对项目进行命名:
服务db:创建镜像mysql 存储卷为db_data,设置环境变量,最后进行健康检查;restart
定义平台在容器终止时应用的策略。always
:该策略始终重新启动容器,直到将其删除。
name: docker_WordPress
services:
db:
image: mysql:5.7
volumes:-./db_data:/var/lib/mysql
restart: always
environment:
MYSQL_ROOT_PASSWORD: mywordpress
MYSQL_DATABASE: wordpress
MYSQL_USER: wordpress
MYSQL_PASSWORD: wordpress
healthcheck:
test: mysql --user=root --password='mywordpress'-e "SELECT 1;"
interval:10s
timeout:5s
retries:10
wordpress:
depends_on:
db:
condition: service_healthy
image: wordpress:latest
ports:-"8081:80"
restart: always
volumes:-./wordpress:/var/www/html
environment:
WORDPRESS_DB_HOST: db:3306
WORDPRESS_DB_USER: wordpress
WORDPRESS_DB_PASSWORD: wordpress
WORDPRESS_DB_NAME: wordpress
通过该命令对配置文件进行自动检查,直到没有报错:
docker compose config
可以看到,如果我们网络没有创建一个docker network,那么会自动配置一个默认的网络
通过浏览器访问ip:
配置参数,点击安装.
进入容器,查看我们数据库存储的数据:
docker exec -it docker_wordpress-db-1 bash
mysql -u wordpress -p
use wordpress;
查看使用者:
select user_login from wp_users;
可以看到我们数据是放到我们的数据库中了.
退出,并释放空间:
docker compose down
提示:请勿发布广告垃圾评论,否则封号处理!!