yaml 规定

docker-compose.yaml 是 Compose 的外围,咱们肯定要学会 yaml 编写的规定

当然,咱们还是查看官网文档,compose 局部

compose file

yaml 文件的构造分为三层:

  • version

版本号

  • services

服务名

  • 其余配置,如网络,挂载等公共的货色
version:''   # 版本号services:    服务器1 web:        以后服务的配置,这个局部就能够和DockerFile 写的差不多了        build        depends_on        ...    服务2 redis:    ...    服务n mongodb:    network:volume:...其余配置

下面说的到版本号在哪里找呢?

进入 dockerhub 网页,https://docs.docker.com/compo...

官网上的这些都是能够应用的版本,如官网给出的例子:

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 # 授予服务配置拜访权限

      • Short syntax
      • Long syntax
    • container_name # 指定容器名
    • credential_spec

      • Example gMSA configuration
    • 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

      • aliases
      • ipv4_address, ipv6_address
    • pid
    • ports

      • Short syntax
      • Long syntax
    • profiles
    • restart
    • secrets

      • Short syntax
      • Long syntax
    • security_opt
    • stop_grace_period
    • stop_signal
    • sysctls
    • tmpfs
    • ulimits
    • userns_mode
    • volumes

      • Short syntax
      • Long syntax
      • Volumes for services, swarms, and stack files
    • 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

    • driver

      • bridge
      • overlay
      • host or none
    • driver_opts
    • attachable
    • enable_ipv6
    • ipam
    • internal
    • labels
    • external
    • name

如上命令还是十分的多,咱们一下子必定也是记不住的,须要咱们缓缓去相熟,用的多了,写的多了,看得多了,常识缓缓的也积重难返了

咱们学习的办法有:

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

实战-搭建 wp 博客

咱们来应用 docker-compose.yaml 的形式来搭建咱们的集体博客,感受一下一键部署的魅力

创立工作目录

mkdir my_wordpresscd 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: wordpressvolumes:  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 能够尝试一波,不亏

参考资料

  • wordpress
  • docker docs

欢送点赞,关注,珍藏

敌人们,你的反对和激励,是我保持分享,提高质量的能源

好了,本次就到这里

技术是凋谢的,咱们的心态,更应是凋谢的。拥抱变动,背阴而生,致力向前行。

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