八、Docker-Compose模版命令

本文涉及的产品
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
云数据库 Tair(兼容Redis),内存型 2GB
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
简介: 八、Docker-Compose模版命令

docker-compose.yml文件模版介绍

模板文件是使用 Compose 的核心,涉及到的指令关键字也比较多。默认的模板文件名称为 docker-compose.yml,格式为 YAML 格式。

version: "3"
services:
  webapp:
    image: mysql
    ports:
      - "80:80"
    volumes:
      - "/data"

YAML文件中的image代表使用Docker仓库中已经存在的镜像,我们之前使用都需要先构建一个镜像,然后在文件里面指定这个镜像才可以运行。

这样比较麻烦,有一个命令比较方便

Build

表示:通过Docker-compose在启动容器之前根据dockerfile构建镜像,然后根据镜像启动容器

version: '3'
services:
  webapp:
    build: ./dir

使用 context 指令指定 Dockerfile 所在文件夹的路径

使用 dockerfile 指令指定 Dockerfile 文件名,如果不指定文件名默认就是寻找Dockerfile

command

覆盖容器启动后默认执行的命令

command: echo "hello world"

container_name

指定容器名称。默认将会使用 项目名称_服务名称_序号 这样的格式

container_name: mysqltest

不推荐使用

depends_on

解决容器的依赖、启动先后的问题。以下例子中会先启动 mysql再启动 tomcat

version: '3'
services:
  web:
    build: ./
    depends_on:
      - mysql
      - tomcat
  tomcat:
    image: tomcat01
  mysql:
    image: mysql01

web服务会等待mysql、tomcat服务启动的差不多了再启动,不会等到被依赖服务完全启动再启动

environment

设置环境变量。可以使用数组或字典两种格式

env_file

跟environment作用类似,也是设置环境变量,不过这个是指定文件的形式

env_file: .env
env_file:
  - ./common.env  #文件的路径
  - ./apps/web.env
  - /opt/secrets.env

相比environment把环境比阿里直接写在yaml中安全一点

expose

暴露端口

本来在Dockerfile中暴露端口,这个命令意思可以不用在Dockerfile中填写端口,一般不用

image

指定为镜像名称或镜像 ID。如果镜像在本地不存在,Compose 将会尝试拉取这个镜像,相当于docker run images(镜像名)

networks

用来指定启动的容器使用的网桥(网络),相当于docker run --network

每个容器指定同一个网桥,那么只要进入一个容器的内部,使用另外一个容器的ip就可以访问到

docker network ls #查看Docker中的网桥

查看网桥的详细信息

ports

暴露宿主端口:容器端口的信息,相当于docker run -p

volumes

暴露宿主路径:容器路径的信息,相当于docker run -v

restart

指定容器退出后的重启策略为始终重启。该命令对保持服务始终运行十分有效,在生产环境中推荐配置为 always 或者 unless-stopped

相当于docker run --restart=always

总结

掌握以上命令之后,如果需要在文件中跑一个es服务,自己写命令可能一点头绪都没有,可以按照这种运行命令改编

docker run -p 6379:6379 -v /mydata/redis/data:/data -v /mydata/redis/conf/redis.conf:/usr/local/etc/redis/redis.conf  -d redis redis-server /usr/local/etc/redis/redis.conf --appendonly yes

改编之后YAML文件

redis:
   image: redis:5.6
   ports: 
    -3306:3306
   volumes: 
    - /mydata/redis/data:/data
    - /mydata/redis/conf/redis.conf:/usr/local/etc/redis/redis.conf
   environment:
    - /usr/local/etc/redis/redis.conf --appendonly yes
相关实践学习
基于Redis实现在线游戏积分排行榜
本场景将介绍如何基于Redis数据库实现在线游戏中的游戏玩家积分排行榜功能。
云数据库 Redis 版使用教程
云数据库Redis版是兼容Redis协议标准的、提供持久化的内存数据库服务,基于高可靠双机热备架构及可无缝扩展的集群架构,满足高读写性能场景及容量需弹性变配的业务需求。 产品详情:https://www.aliyun.com/product/kvstore     ------------------------------------------------------------------------- 阿里云数据库体验:数据库上云实战 开发者云会免费提供一台带自建MySQL的源数据库 ECS 实例和一台目标数据库 RDS实例。跟着指引,您可以一步步实现将ECS自建数据库迁移到目标数据库RDS。 点击下方链接,领取免费ECS&RDS资源,30分钟完成数据库上云实战!https://developer.aliyun.com/adc/scenario/51eefbd1894e42f6bb9acacadd3f9121?spm=a2c6h.13788135.J_3257954370.9.4ba85f24utseFl
相关文章
|
27天前
|
安全 Docker 容器
|
27天前
|
网络安全 数据安全/隐私保护 Docker
|
25天前
|
存储 监控 安全
|
2月前
|
Linux Docker 容器
Docker操作 :容器命令
Docker操作 (四)
|
1月前
|
Web App开发 前端开发 测试技术
【Docker项目实战】使用docker部署tabler后台模版
【10月更文挑战第10天】使用docker部署tabler后台模版
40 1
【Docker项目实战】使用docker部署tabler后台模版
|
25天前
|
存储 关系型数据库 MySQL
|
1月前
|
网络协议 Docker 容器
docker pull命令拉取镜像失败的解决方案
docker pull命令拉取镜像失败的解决方案
826 1
|
1月前
|
安全 网络安全 开发者
Docker学习笔记(一):Docker命令总结
本文介绍了Docker的基本概念、优点以及常用命令。Docker是一个开源的应用容器引擎,它通过容器打包应用程序及其依赖项,实现快速部署和迁移。主要优点包括轻量级、可移植性、易于管理、安全性和开源性。文章还区分了镜像和容器的概念,并提供了构建镜像、查看容器、运行容器、停止和删除容器等常用Docker命令的示例。
131 0
|
1月前
|
Linux 网络安全 Docker
安装后无法使用 Docker 命令
【10月更文挑战第3天】
185 2
|
1月前
|
安全 Shell Linux
docker进入容器命令
docker进入容器命令