Docker compose文件模板
docker-compose-public.yml
# 命令执行 docker-compose -p public-dev-ops -f docker-compose-public.yml up -d
services:
mysql:
image: mysql:8.0.42 # 使用MySQL 8.0.42官方镜像
container_name: mysql # 指定容器名称
command: --default-authentication-plugin=mysql_native_password # 使用传统密码认证方式
restart: always # 容器退出时自动重启
environment:
TZ: Asia/Shanghai # 设置时区为上海
MYSQL_ROOT_PASSWORD: 123456 # 设置root用户密码
ports:
- "13306:3306" # 将容器3306端口映射到主机13306端口
volumes:
# 挂载自定义MySQL配置文件
- D:/Docker/volumes/public/mysql/my.cnf:/etc/mysql/conf.d/mysql.cnf:ro # :ro表示只读
# 挂载SQL初始化脚本目录
- D:/Docker/volumes/public/mysql/sql:/docker-entrypoint-initdb.d
healthcheck:
test: [ "CMD", "mysqladmin" ,"ping", "-h", "localhost" ] # 健康检查命令
interval: 5s # 每5秒检查一次
timeout: 10s # 超时时间10秒
retries: 10 # 重试10次
start_period: 15s # 容器启动后15秒开始检查
networks:
- my-network # 连接到自定义网络
# phpmyadmin https://hub.docker.com/_/phpmyadmin
phpmyadmin:
image: phpmyadmin/phpmyadmin:5.2.2 # 使用phpMyAdmin 5.2.2镜像
container_name: phpmyadmin # 指定容器名称
hostname: phpmyadmin # 设置容器主机名
ports:
- 10880:80 # 将容器80端口映射到主机10880端口
environment:
- PMA_HOST=mysql # 指定连接的MySQL主机
- PMA_PORT=3306 # 指定MySQL端口
- MYSQL_ROOT_PASSWORD=123456 # MySQL root密码
depends_on:
mysql:
condition: service_healthy # 依赖MySQL服务健康状态
networks:
- my-network # 连接到自定义网络
# Redis
redis:
image: redis:8.0.2 # 使用Redis 8.0.2官方镜像
container_name: redis # 指定容器名称
restart: always # 容器退出时自动重启
hostname: redis # 设置容器主机名
privileged: true # 赋予容器特权模式
ports:
- 16379:6379 # 将容器6379端口映射到主机16379端口
volumes:
# 挂载自定义Redis配置文件
- D:/Docker/volumes/public/redis/redis.conf:/usr/local/etc/redis/redis.conf
command: redis-server /usr/local/etc/redis/redis.conf # 启动Redis时使用自定义配置
networks:
- my-network # 连接到自定义网络
healthcheck:
test: [ "CMD", "redis-cli", "ping" ] # 健康检查命令
interval: 10s # 每10秒检查一次
timeout: 5s # 超时时间5秒
retries: 3 # 重试3次
# RedisAdmin https://github.com/joeferner/redis-commander
redis-admin:
image: spryker/redis-commander:0.8.0 # 使用Redis Commander 0.8.0镜像
container_name: redis-admin # 指定容器名称
hostname: redis-commander # 设置容器主机名
restart: always # 容器退出时自动重启
ports:
- 18081:8081 # 将容器8081端口映射到主机18081端口
environment:
- REDIS_HOSTS=local:redis:6379 # 配置要管理的Redis实例
- HTTP_USER=admin # Web界面登录用户名
- HTTP_PASSWORD=admin # Web界面登录密码
- LANG=C.UTF-8 # 设置语言环境
- LANGUAGE=C.UTF-8
- LC_ALL=C.UTF-8
networks:
- my-network # 连接到自定义网络
depends_on:
redis:
condition: service_healthy # 依赖Redis服务健康状态
networks:
my-network:
driver: bridge # 使用bridge驱动创建自定义网络
docker-compose-elk.yml
version: '3' # 指定 Docker Compose 文件格式版本为3
# 执行脚本: docker-compose -p elk -f docker-compose-elk.yml up -d
# 验证命令: GET _cat/indices - 确认 group-buy-market-log- 索引存在即表示日志接入成功
services:
elasticsearch:
image: elasticsearch:7.17.28 # 使用指定版本的 Elasticsearch 官方镜像
ports:
- '9200:9200' # 暴露 REST API 端口(HTTP通信)
- '9300:9300' # 暴露集群内部通信端口(TCP)
container_name: elasticsearch # 设置固定容器名称
restart: always # 容器退出时自动重启
environment:
- 'cluster.name=elasticsearch' # 定义 Elasticsearch 集群名称
- 'discovery.type=single-node' # 单节点模式(无需集群发现机制)
- "cluster.name=docker-cluster" # 设置集群名称(覆盖前一设置,保留其一即可)
- 'ES_JAVA_OPTS=-Xms512m -Xmx512m' # JVM 内存分配(最小/最大堆内存均为512MB)
networks:
- elk # 连接到名为 elk 的自定义网络
logstash:
image: logstash:7.17.28 # 使用与 ES 版本匹配的 Logstash 镜像
container_name: logstash
restart: always
volumes:
# 挂载宿主机配置文件到容器(Windows路径示例)
- D:/Docker/volumes/elk/logstash/logstash.conf:/usr/share/logstash/pipeline/logstash.conf
ports:
- '4560:4560' # 自定义日志接收端口(TCP)
- '50000:50000/tcp' # 预留日志输入端口(TCP)
- '50000:50000/udp' # 预留日志输入端口(UDP,支持 syslog 等)
- '9600:9600' # Logstash API 端口(监控/管理)
environment:
LS_JAVA_OPTS: -Xms1024m -Xmx1024m # 分配 Logstash JVM 内存(1GB)
TZ: Asia/Shanghai # 设置容器时区(日志时间戳校准)
MONITORING_ENABLED: false # 关闭内置监控节省资源
links:
- elasticsearch:es # 创建别名:通过主机名 `es` 访问 Elasticsearch
networks:
- elk
depends_on:
- elasticsearch # 确保 ES 先启动后启动 Logstash(启动顺序控制)
kibana:
image: kibana:7.17.28 # Kibana 版本需与 ES 一致
container_name: kibana
restart: always
volumes:
# 挂载 Kibana 配置文件(Windows路径示例)
- D:/Docker/volumes/elk/kibana/config/kibana.yml:/usr/share/kibana/config/kibana.yml
ports:
- '5601:5601' # 暴露 Web 界面访问端口
links:
- elasticsearch:es # 通过别名 `es` 访问 ES 服务
environment:
- ELASTICSEARCH_URL=http://elasticsearch:9200 # 设置 ES 后端地址(服务名)
- 'elasticsearch.hosts=http://es:9200' # 兼容性设置(覆盖上一条设置)
- I18N_LOCALE=zh-CN # 设置中文界面
- TZ=Asia/Shanghai # 设置容器时区
networks:
- elk
depends_on:
- elasticsearch # 依赖 ES 服务先启动
# 自定义网络配置
networks:
elk:
driver: bridge # 创建名为 elk 的桥接网络,使容器间可通过服务名通信
本文来自博客园,作者:沦陷在梦里,转载请注明原文链接:https://www.cnblogs.com/fallingintodreams/p/18939210

浙公网安备 33010602011771号