Docker-compose工具
1.安装docker-compose工具
mv docker-compose-linux-x86_64 /usr/bin/docker-compose
授权:chmod +x /usr/bin/docker-compose
检查版本是否正确:
docker-compose --version
Docker Compose version v2.37.1
2.编写docker-compose.yml文件:
先创建一个ruoyi-project项目
mkdir ruoyi-project
cd ruoyi-project
vim docker-compose.yml
内容如下:
services:
#MySQL 数据库服务
mysql: #服务名,compose使用服务名连接,不是之前的使用容器名连接了
image: mysql:5.7 #实际使用的镜像名称
container_name: mysql_db #启动的容器名,任意写
environment:
MYSQL_ROOT_PASSWORD: Aa123qwe
MYSQL_DATABASE: ruoyi-vue-pro
MYSQL_USER: ruoyi
MYSQL_PASSWORD: Aa123qwe
volumes:
- mysql_data:/var/lib/mysql
- ./mysql:/docker-entrypoint-initdb.d # 放在这个目录下的sql 启动msyql的时候会加载配置
ports:
- "3306:3306"
networks:
- app_network
healthcheck:
test: ["CMD", "mysqladmin", "ping", "-h", "localhost","-uroot", "-pAa123qwe"]
interval: 5s
timeout: 3s
retries: 5
# Redis 缓存服务
redis:
image: redis:7.0-alpine
container_name: redis_cache
ports:
- "6379:6379"
volumes:
- redis_data:/data # 持久化数据
networks:
- app_network
healthcheck:
test: ["CMD", "redis-cli", "ping"]
interval: 5s
# Java 后端服务 (Spring Boot)
java: #前端ui代理那里:http://java:48080 是这里的服务名
#build:
# context: ./backend # Dockerfile 所在目录
# dockerfile: Dockerfile
image: ruoyi_backend:v1
container_name: java_backend
depends_on:
mysql:
condition: service_healthy
redis:
condition: service_healthy
ports:
- "48080:48080" # Spring Boot 默认端口
networks:
- app_network
restart: unless-stopped
# 前端服务 (Vue/React)
frontend:
#build:
# context: ./frontend # Dockerfile 所在目录
# dockerfile: Dockerfile
image: ruoyi_frontend:v1
container_name: web_frontend
ports:
- "80:80" # Nginx 默认端口
depends_on:
- java** #需要注意!!
networks:
- app_network
# 自定义网络(隔离容器通信)
networks:
app_network:
driver: bridge
ipam:
config:
- subnet: 172.20.0.0/24 # 固定子网防止 IP 变化
如果使用一个已经创建好的自定义网络:
netrowks:
mynet: #已经创建好的自定义网络
external: true #compose不会自己新建名叫mynet的网络,而是去找该网络
# 数据卷声明(持久化数据)
volumes:
mysql_data:
redis_data:
许可协议:
CC BY 4.0