yaml 规则
docker-compose.yaml 是 Compose 的核心,咱们一定要学会 yaml 编写的规则
当然,咱们还是查看官方文档,compose 部分
yaml 文件的结构分为三层:
- version
版本号
- services
服务名
- 其他配置,如网络,挂载等公共的东西
version:'' # 版本号 services: 服务器1 web: 当前服务的配置,这个部分就可以和DockerFile 写的差不多了 build depends_on ... 服务2 redis: ... 服务n mongodb: network: volume: ... 其他配置
上面说的到版本号在哪里找呢?
进入 dockerhub 网页,https://docs.docker.com/compose/compose-file/compose-file-v3/
官网上的这些都是可以使用的版本,如官网给出的例子:
version: "3.9" services: redis: image: redis:alpine ports: - "6379" networks: - frontend deploy: replicas: 2 update_config: parallelism: 2 delay: 10s restart_policy: condition: on-failure ... networks: frontend: backend: volumes: db-data:
services 和 其他命令都可以写什么呢?
services 下面可以写的命令非常的多,文档上也讲的非常的详细
- Service configuration reference
- build # 构建容器的路径
- context # 指定dockerfile 的路径 或者 git存储库的url
- dockerfile # 指定 dockerfile 文件
- args # 添加构建的参数
- cache_from # 缓存解析的镜像列表
- labels # 添加元数据,我们也可以使用数组或者是字典
- network # 定义网络
- shm_size # 设置构建镜像的分区大小
/dev/shm
,例如 shm_size: ‘2gb’ - target # 指定构建的作用,例如 prod,test,dev
- cap_add, cap_drop # 添加或删除容器的功能
- cgroup_parent # 指定一个可选的父容器组
- command # 覆盖默认命令
- configs # 授予服务配置访问权限
- container_name # 指定容器名
- credential_spec
- depends_on # 指定依赖的服务
- deploy # 指定与服务的部署和运行相关的配置
- endpoint_mode
- labels
- mode
- placement
- max_replicas_per_node
- replicas
- resources
- restart_policy
- rollback_config
- update_config
- Not supported for docker stack deploy
- devices # 设备映射列表
- dns # dns 配置,配置 ip
- dns_search # dns 配置,配置域名
- entrypoint # 指定命令,可追加
- env_file # 从文件中添加环境变量
- environment # 添加环境变量
- expose # 暴露端口
- external_links # 与外部容器的链接
- extra_hosts # 额外的主机映射
- healthcheck # 心跳检测
- image # 指定镜像
- init
- isolation
- labels
- links
- logging
- network_mode
- networks
- pid
- ports
- Specifying durations
- Specifying byte values
- Volume configuration reference
- Network configuration reference
- driver
如上命令还是非常的多,我们一下子肯定也是记不住的,需要我们慢慢去熟悉,用的多了,写的多了,看得多了,知识慢慢的也根深蒂固了
咱们学习的方法有:
- 多看官方文档,看官网的例子
- 看开源项目,看看别人的 docker-compose.yaml 是如何编写的
实战-搭建 wp 博客
咱们来使用 docker-compose.yaml 的方式来搭建我们的个人博客,感受一下一键部署的魅力
创建工作目录
mkdir my_wordpress cd my_wordpress
编写我们的 docker-compose.yaml 文件
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 volumes: - wordpress_data:/var/www/html ports: - "8888:80" restart: always environment: WORDPRESS_DB_HOST: db:3306 WORDPRESS_DB_USER: wordpress WORDPRESS_DB_PASSWORD: wordpress WORDPRESS_DB_NAME: wordpress volumes: db_data: {} wordpress_data: {}
解释一下 docker-compose.yaml 文件的含义:
- 安装了 2 个服务,一个是 db mysql,一个是 wordpress 服务
- 数据库服务
- mysql 使用的镜像是 mysql:5.7
- 挂载是挂到
/var/lib/mysql
,默认使用的是具名挂载,所有会挂载到宿主机的这个路径/var/lib/docker/volumes/my_wordpress_db_data/_data
- 设置 mysql 相关的环境变量
- wordpress 服务
- 依赖数据库服务
- 用的镜像是 wordpress:latest
- 挂载卷是
/var/www/html
,会挂载到我们宿主记得这个目录/var/lib/docker/volumes/my_wordpress_wordpress_data/_data
- 设置端口,将宿主记得 8888 端口映射到容器的 80 端口
- 设置 wordpress 相关的环境变量
docker-compose up 一键部署服务并启动
在工作目录执行如下指令一键部署服务
#docker-compose up
我们也可以在让服务在后台启动
#docker-compose up -d
启动之后我们可以看到程序先去创建网络,创建对应的挂载卷
开始创建并启动对应的容器
- my_wordpress_db_1
- my_wordpress_wordpress_1
查看一下博客搭建的效果
我们可以访问博客地址:服务器的IP:8888
nice,使用docker-compose.yaml 搭建个人的 wordpress 博客成功!!!
wordpress 的界面是这个样子的,里面的功能很多,直接就在页面上定制化我们自己的页面,非常方便,xdm 可以尝试一波,不亏
参考资料
欢迎点赞,关注,收藏
朋友们,你的支持和鼓励,是我坚持分享,提高质量的动力
好了,本次就到这里
技术是开放的,我们的心态,更应是开放的。拥抱变化,向阳而生,努力向前行。
我是小魔童哪吒,欢迎点赞关注收藏,下次见~