热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

八、Docker

docker-compose.yml文件模版介绍模板文件是使用Compose的核心,涉及到的指令关键字也比较多。默认的模板文件名称为docker-compose.yml
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

推荐阅读
  • Go从入门到精通系列视频之go编程语言密码学哈希算法(二) ... [详细]
  • flea,frame,db,使用,之 ... [详细]
  • Flutter 核心技术与混合开发模式深入解析
    本文深入探讨了 Flutter 的核心技术,特别是其混合开发模式,包括统一管理模式和三端分离模式,以及混合栈原理。通过对比不同模式的优缺点,帮助开发者选择最适合项目的混合开发策略。 ... [详细]
  • 如何在DedeCMS专题页节点文档中调用自定义模型字段?
    在完成DedeCMS专题页节点文章列表样式的修改后,如果需要在列表中显示自定义模型的字段,由于DedeCMS默认不支持这一功能,因此需要进行一些二次开发。本文将详细介绍如何通过修改模板文件和核心文件来实现这一需求。 ... [详细]
  • 本文介绍了如何将Spring属性占位符与Jersey的@Path和@ApplicationPath注解结合使用,以便在资源路径中动态解析属性值。 ... [详细]
  • ABP框架是ASP.NET Boilerplate的简称,它不仅是一个开源且文档丰富的应用程序框架,还提供了一套基于领域驱动设计(DDD)的最佳实践架构模型。本文将详细介绍ABP框架的特点、项目结构及其在Web API优先架构中的应用。 ... [详细]
  • Spring 中策略模式的应用:Resource 接口详解
    本文探讨了在 Spring 框架中如何利用 Resource 接口实现资源访问策略。Resource 接口作为资源访问策略的抽象,通过多种实现类支持不同类型的资源访问。 ... [详细]
  • 通过将常用的外部命令集成到VSCode中,可以提高开发效率。本文介绍如何在VSCode中配置和使用自定义的外部命令,从而简化命令执行过程。 ... [详细]
  • 理解浏览器历史记录(2)hashchange、pushState
    阅读目录1.hashchange2.pushState本文也是一篇基础文章。继上文之后,本打算去研究pushState,偶然在一些信息中发现了锚点变 ... [详细]
  • 2017年软件开发领域的七大变革
    随着技术的不断进步,2017年对软件开发人员而言将充满挑战与机遇。本文探讨了开发人员需要适应的七个关键变化,包括人工智能、聊天机器人、容器技术、应用程序版本控制、云测试环境、大众开发者崛起以及系统管理的云迁移。 ... [详细]
  • 本文介绍了如何在Linux系统中获取库源码,并在从源代码编译软件时收集所需的依赖项列表。 ... [详细]
  • 在SpringBoot多模块Maven项目中,经常会遇到一个启动模块无法访问其他模块中的静态资源的问题。本文首先详细描述了该问题的具体表现,然后从配置文件入手,探讨了可能的原因,并提出了一种通过调整`application.yaml`配置来解决这一问题的有效方法。此外,还介绍了如何通过优化项目结构和使用Spring Boot的静态资源路径映射功能,进一步提高资源引用的灵活性和可靠性。 ... [详细]
  • 本文深入探讨了Spring Cloud Eureka在企业级应用中的高级使用场景及优化策略。首先,介绍了Eureka的安全配置,确保服务注册与发现过程的安全性。接着,分析了Eureka的健康检查机制,提高系统的稳定性和可靠性。随后,详细讨论了Eureka的各项参数调优技巧,以提升性能和响应速度。最后,阐述了如何实现Eureka的高可用性部署,保障服务的连续性和可用性。通过这些内容,开发者可以更好地理解和运用Eureka,提升微服务架构的整体效能。 ... [详细]
  • Android目录遍历工具 | AppCrawler自动化测试进阶(第二部分):个性化配置详解
    终于迎来了“足不出户也能为社会贡献力量”的时刻,但有追求的测试工程师绝不会让自己的生活变得乏味。与其在家消磨时光,不如利用这段时间深入研究和提升自己的技术能力,特别是对AppCrawler自动化测试工具的个性化配置进行详细探索。这不仅能够提高测试效率,还能为项目带来更多的价值。 ... [详细]
  • Envoy 流量分配策略优化
    在本研究中,我们对Envoy的流量分配策略进行了优化,旨在提高系统的稳定性和性能。实验环境包括一个前端代理服务(Envoy,IP地址为172.31.57.10)和五个后端服务。通过调整Envoy的配置,实现了更高效的流量分发和负载均衡,显著提升了整体系统的响应速度和可靠性。 ... [详细]
author-avatar
crazyuzy327
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有