企业网站设计方案书,wordpress 手机端模板下载,苏州论坛建站模板,如何在线上销售自己的产品简介
在开发复杂的分布式应用时#xff0c;通常需要同时运行多个服务#xff08;如数据库、缓存、Web 应用等#xff09;。Docker Compose 提供了一种简便的方式来定义和运行多容器 Docker 应用程序。通过一个 docker-compose.yml 文件#xff0c;您可以配置应用程序的服务…简介
在开发复杂的分布式应用时通常需要同时运行多个服务如数据库、缓存、Web 应用等。Docker Compose 提供了一种简便的方式来定义和运行多容器 Docker 应用程序。通过一个 docker-compose.yml 文件您可以配置应用程序的服务、网络和卷并且只需一条命令即可轻松管理这些服务的生命周期。
本文将介绍如何编写一个 docker-compose.yml 文件以及如何使用它来一键创建并启动所有必要的容器。
前提条件
已安装 Docker 和 Docker Compose。 对 Docker 的基本概念有所了解包括镜像、容器、网络和卷。
docker-compose2.X版本
Docker Compose 配置文件
docker-compose.yml 文件是 Docker Compose 的核心配置文件用于定义和配置服务、网络和卷。下面是一个简单的例子展示了如何为一个包含 RabbitMQ 和 Elasticsearch 服务的应用程序编写配置文件。
需要提前把挂载目录和配置文件创建或者写好配置内容 需要创建个网络
docker network create my_custom_networkservices:redis:image: xxxxx/service/redis-amd64:7.0.2container_name: redisnetworks:- security-hubvolumes:- /data/common/redis/config/redis.conf:/etc/redis.conf- /data/common/redis/data:/dataports:- 6379:6379restart: alwayscommand: [redis-server, /etc/redis.conf, --requirepass, xxxx]rabbitmq:image: xxxxxx/service/security-hub/rabbitmq-amd64:3.11.2container_name: rabbitmqnetworks:- security-hubports:- 5672:5672- 15672:15672restart: alwaysvolumes:- /data/common/rabbitmq/data:/var/lib/rabbitmq- /data/common/rabbitmq/config/rabbitmq.conf:/etc/rabbitmq/conf.d/10-defaults.confcommand: sh -c rabbitmq-plugins enable --offline rabbitmq_management rabbitmq-serverxxl-job:image: docker.inspur.com:5000/rds-common/job-center:2.0.2-8container_name: job-centernetworks:- security-hubports:- 8085:8085restart: alwaysvolumes:- /data/common/job-center/application.properties:/usr/lib/config/application.properties- /data/common/job-center/logback.xml:/usr/lib/config/logback.xmlelasticsearch:image: xxxxxx/service/lma/elasticsearch-amd64:7.17.23container_name: elasticsearchnetworks:- security-hubports:- 9200:9200- 9300:9300restart: alwaysenvironment:- discovery.typesingle-node- bootstrap.memory_locktrue- ES_JAVA_OPTS-Xms512m -Xmx512m- xpack.security.enabledtrue- ELASTIC_PASSWORDxxxxulimits:memlock:soft: -1hard: -1volumes:- /data/common/elasticsearch/config:/usr/share/elasticsearch/config- /data/common/elasticsearch/data:/usr/share/elasticsearch/datanetworks:security-hub:external: true服务定义 (services:) redis: 这是服务的名字用于标识这个特定的服务配置。
配置项解释 image: 指定了要使用的 Docker 镜像。在这个例子中镜像是从某个私有仓库拉取的 xxxxx/service/redis-amd64:7.0.2。这里的 xxxxx 应该替换为实际的仓库地址。
container_name: 设置容器启动后的名称为 redis。如果不指定默认会生成一个基于项目和服务名的名称。
networks: 定义了容器将加入的网络。这里指定了一个自定义网络 security-hub这有助于服务间通信和隔离。
volumes: 映射主机上的目录或文件到容器内实现数据持久化或配置共享。 /data/common/redis/config/redis.conf:/etc/redis.conf: 将宿主机的 /data/common/redis/config/redis.conf 文件挂载到容器内的 /etc/redis.conf允许通过修改宿主机上的配置文件来影响容器内的Redis配置。 /data/common/redis/data:/data: 将宿主机的 /data/common/redis/data 目录挂载到容器内的 /data确保Redis的数据可以持久保存在宿主机上。
ports: 端口映射格式为 “host_port:container_port”。此处将宿主机的 6379 端口映射到容器内的 6379 端口使得外部可以通过访问宿主机的 6379 端口来与Redis交互。
restart: 设置重启策略。always 表示无论容器退出代码是什么Docker都会尝试重新启动容器。
command: 覆盖默认的容器启动命令。这里是告诉容器以特定的方式启动Redis服务器 [“redis-server”, “/etc/redis.conf”, “–requirepass”, “xxxx”] redis-server: 启动Redis服务器的命令。 /etc/redis.conf: 指定配置文件的位置。 –requirepass xxxxx: 设置Redis的密码为 xxxxx这样客户端连接时需要提供此密码进行身份验证。
environment: 设置环境变量这些变量会影响容器内应用的行为。 discovery.typesingle-node: 指定这是一个单节点的Elasticsearch实例不需要与其他节点组成集群。 bootstrap.memory_locktrue: 锁住内存防止交换swap这对于性能非常重要。 ES_JAVA_OPTS-Xms512m -Xmx512m: 设置JVM堆大小最小和最大均为512MB。调整这些值以适应您的硬件资源。 xpack.security.enabledtrue: 启用X-Pack安全特性包括加密、认证等。 ELASTIC_PASSWORDxxxx: 设置默认用户的密码通常是elastic用户。请确保将xxxx替换为一个强密码。
ulimits: 设置容器的资源限制。 memlock: 设置内存锁定限制。soft: -1 和 hard: -1 表示没有限制允许Elasticsearch进程锁住物理内存避免被操作系统交换出去。
启动服务
保存上述配置到名为 docker-compose.yml 的文件中后在该文件所在的目录下运行以下命令以启动所有服务
docker-compose up -d-d 参数表示后台运行容器。如果您想要前台运行以便实时查看日志输出可以省略 -d。
停止并删除所有服务可以使用
docker-compose down