前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【Docker 系列】docker 学习十,Compose 编写规则及wp 实战

【Docker 系列】docker 学习十,Compose 编写规则及wp 实战

作者头像
阿兵云原生
发布2023-02-16 11:12:27
4390
发布2023-02-16 11:12:27
举报
文章被收录于专栏:golang云原生new

Compose 编写规则及wp 实战

yaml 规则

docker-compose.yaml 是 Compose 的核心,咱们一定要学会 yaml 编写的规则

当然,咱们还是查看官方文档,compose 部分

compose file

yaml 文件的结构分为三层:

  • version

版本号

  • services

服务名

  • 其他配置,如网络,挂载等公共的东西
代码语言:javascript
复制
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/

官网上的这些都是可以使用的版本,如官网给出的例子:

代码语言:javascript
复制
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
    • Short syntax
    • Long syntax
    • Volumes for services, swarms, and stack files
    • Short syntax
    • Long syntax
    • Short syntax
    • Long syntax
    • aliases
    • ipv4_address, ipv6_address
    • endpoint_mode
    • labels
    • mode
    • placement
    • max_replicas_per_node
    • replicas
    • resources
    • restart_policy
    • rollback_config
    • update_config
    • Not supported for docker stack deploy
    • Example gMSA configuration
    • Short syntax
    • Long syntax
    • context # 指定dockerfile 的路径 或者 git存储库的url
    • dockerfile # 指定 dockerfile 文件
    • args # 添加构建的参数
    • cache_from # 缓存解析的镜像列表
    • labels # 添加元数据,我们也可以使用数组或者是字典
    • network # 定义网络
    • shm_size # 设置构建镜像的分区大小 /dev/shm,例如 shm_size: '2gb'
    • target # 指定构建的作用,例如 prod,test,dev
    • build # 构建容器的路径
    • cap_add, cap_drop # 添加或删除容器的功能
    • cgroup_parent # 指定一个可选的父容器组
    • command # 覆盖默认命令
    • configs # 授予服务配置访问权限
    • container_name # 指定容器名
    • credential_spec
    • depends_on # 指定依赖的服务
    • 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
    • profiles
    • restart
    • secrets
    • security_opt
    • stop_grace_period
    • stop_signal
    • sysctls
    • tmpfs
    • ulimits
    • userns_mode
    • volumes
    • domainname, hostname, ipc, mac_address, privileged, read_only, shm_size, stdin_open, tty, user, working_dir
  • Specifying durations
  • Specifying byte values
  • Volume configuration reference
    • driver
    • driver_opts
    • external
    • labels
    • name
  • Network configuration reference
    • bridge
    • overlay
    • host or none
    • driver
    • driver_opts
    • attachable
    • enable_ipv6
    • ipam
    • internal
    • labels
    • external
    • name

如上命令还是非常的多,我们一下子肯定也是记不住的,需要我们慢慢去熟悉,用的多了,写的多了,看得多了,知识慢慢的也根深蒂固了

咱们学习的方法有:

  • 多看官方文档,看官网的例子
  • 看开源项目,看看别人的 docker-compose.yaml 是如何编写的

实战-搭建 wp 博客

咱们来使用 docker-compose.yaml 的方式来搭建我们的个人博客,感受一下一键部署的魅力

创建工作目录

代码语言:javascript
复制
mkdir my_wordpress
cd my_wordpress

编写我们的 docker-compose.yaml 文件

代码语言:javascript
复制
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 一键部署服务并启动

在工作目录执行如下指令一键部署服务

代码语言:javascript
复制
#docker-compose up

我们也可以在让服务在后台启动

代码语言:javascript
复制
#docker-compose up -d

启动之后我们可以看到程序先去创建网络,创建对应的挂载卷

开始创建并启动对应的容器

  • my_wordpress_db_1
  • my_wordpress_wordpress_1

查看一下博客搭建的效果

我们可以访问博客地址:服务器的IP:8888

nice,使用docker-compose.yaml 搭建个人的 wordpress 博客成功!!!

wordpress 的界面是这个样子的,里面的功能很多,直接就在页面上定制化我们自己的页面,非常方便,xdm 可以尝试一波,不亏

参考资料

  • wordpress
  • docker docs

欢迎点赞,关注,收藏

朋友们,你的支持和鼓励,是我坚持分享,提高质量的动力

好了,本次就到这里

技术是开放的,我们的心态,更应是开放的。拥抱变化,向阳而生,努力向前行。

我是小魔童哪吒,欢迎点赞关注收藏,下次见~

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-11-14,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 阿兵云原生 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Compose 编写规则及wp 实战
    • yaml 规则
      • 上面说的到版本号在哪里找呢?
      • services 和 其他命令都可以写什么呢?
    • 实战-搭建 wp 博客
      • 创建工作目录
      • 编写我们的 docker-compose.yaml 文件
      • docker-compose up 一键部署服务并启动
      • 查看一下博客搭建的效果
    • 欢迎点赞,关注,收藏
    相关产品与服务
    网站建设
    网站建设(Website Design Service,WDS),是帮助您快速搭建企业网站的服务。通过自助模板建站工具及专业设计服务,无需了解代码技术,即可自由拖拽模块,可视化完成网站管理。全功能管理后台操作方便,一次更新,数据多端同步,省时省心。使用网站建设服务,您无需维持技术和设计师团队,即可快速实现网站上线,达到企业数字化转型的目的。
    领券
    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档