docker-compose.yml 配置示例
version: "3.8"
networks:
demoRouter:
services:
demo-mysql8:
image: mysql:8.0.36
container_name: demo-mysql8
hostname: demo-mysql8
restart: always
# ports:
# - 3306:3306
networks:
- demoRouter
command: [
'--character-set-server=utf8mb4',
'--collation-server=utf8mb4_unicode_ci'
]
environment:
- MYSQL_ROOT_PASSWORD=Pas#001
volumes:
- ./data/mysql/init.sql:/docker-entrypoint-initdb.d/init.sql #初始化脚本
- ./data/mysql/data:/var/lib/mysql
- ./data/mysql/conf.d:/etc/mysql/conf.d
- /usr/share/zoneinfo/Asia/Shanghai:/etc/localtime
deploy:
resources:
limits:
memory: 512M
healthcheck: #健康检查
test: ["CMD", "mysqladmin", "ping", "-h", "localhost"]
interval: 10s
timeout: 5s
retries: 5
demo-redis6:
image: redis6:1.0
build:
context: ./data/redis
dockerfile: Dockerfile
container_name: demo-redis6
hostname: demo-redis6
restart: always
# ports:
# - 6379:6379
networks:
- demoRouter
volumes:
- ./data/redis/redis.conf:/usr/local/etc/redis/redis.conf
- /usr/share/zoneinfo/Asia/Shanghai:/etc/localtime
deploy:
resources:
limits:
memory: 256M
demo-website:
image: openjdk:17
container_name: demo-website
hostname: demo-website
restart: always
networks:
- demoRouter
volumes:
- /usr/share/zoneinfo/Asia/Shanghai:/etc/localtime
- ./data/website/demo-website.jar:/app.jar
- ./data/website/data:/var/app/data/
command: ["java","-Xms256M","-Xmx256M","-XX:HeapDumpPath=/var/app/data/jvm/","-Duser.timezone=GMT+8", "-jar", "/app.jar","--spring.profiles.active=prod"]
deploy:
resources:
limits:
memory: 512M
depends_on:
demo-mysql8:
condition: service_healthy #必须在mysql8组件启动后健康检查通过后启动
healthcheck:
test: ["CMD","curl","-f","http://127.0.0.1:8080"]
interval: 10s
timeout: 5s
retries: 5
start_period: 30s
demo-nginx:
image: nginx:1.19.10
container_name: demo-nginx
restart: always
volumes:
- ./data/nginx/nginx.conf:/etc/nginx/nginx.conf
- ./data/nginx/conf.d:/etc/nginx/conf.d
- ./data/nginx/html/:/usr/share/nginx/html
- ./data/nginx/log:/var/log/nginx
ports:
- 80:80
- 443:443
networks:
- demoRouter
deploy:
resources:
limits:
memory: 256M
depends_on:
demo-website:
condition: service_healthy
healthcheck:
test: ["CMD","curl","-f","http://localhost"] #注意curl 检查的是http状态码,如果非200则错误
interval: 10s
timeout: 5s
retries: 5
start_period: 30s
└─docker
│ docker-compose.yml
│
└─data
├─mysql
│ │ init.sql
│ │
│ └─conf.d
│ my.ext.cnf
│
├─nginx
│ │ nginx.conf
│ │
│ ├─conf.d
│ │ │ demo-website.conf
│ │ │ default.conf
│ │ │
│ │ └─ssl
│ │ demo.com.key
│ │ demo.com_bundle.crt
│ │
│ ├─html
│ └─log
├─redis
│ Dockerfile
│ redis.conf
│
└─website
以上文件均已测过。
http://blog.xqlee.com/article/2503291212549755.html