下面是一个包含redis、mysql和jar包的docker-compose.yml文件,并将它们挂载在同一个网络中:
version: '3'
services:
redis:
image: redis:latest
container_name: my-redis
networks:
- my-network
mysql:
image: mysql:latest
restart: always
environment:
MYSQL_ROOT_PASSWORD: your_password_here
MYSQL_DATABASE: your_database_here
MYSQL_USER: your_user_here
MYSQL_PASSWORD: your_password_here
volumes:
- ./mysql-data:/var/lib/mysql # 持久化存储数据库数据到本地目录,注意要在当前目录下创建mysql-data文件夹
container_name: my-mysql
networks:
- my-network
app:
build: .
ports:
- "8080:8080"
depends_on:
- mysql # 等待mysql启动完成后再启动应用程序容器
- redis # 等待redis启动完成后再启动应用程序容器
container_name: my-app
networks:
- my-network
networks:
my-network:
解释一下:
redis
和mysql
服务使用官方镜像,并映射对外暴露的端口。mysql
服务使用volumes将数据库数据持久化存储到本地,避免容器删除后数据丢失。app
服务使用自定义Dockerfile构建,并映射对外暴露的端口。- 所有容器都被挂载在同一个名为“my-network”的网络中,以便它们之间可以相互访问。
depends_on
用于指定应用程序容器需要等待mysql和redis容器启动完成后再启动。
你需要将该文件保存为docker-compose.yml,然后在该文件所在目录执行以下命令来启动这些服务:
docker-compose up -d
其中-d参数表示以“后台模式”运行。