富在术数不在劳身,利在局势不在力耕
简单的文件结构:
# 这里的版本对应了docker最低允许的版本
version: '3'
# 等多个服务
services:
#服务名,数据持久化服务
db:
#服务使用的镜像
image: mysql:latest
restart: always
# 初始化环境变量,这里的是mysql的数据库和数据库的密码
environment:
- MYSQL_DATABASE=dockertest
- MYSQL_ROOT_PASSWORD=123456789
# 端口映射
ports:
- 3309:3306
# 数据持久化挂载数据存储卷,也可以挂在外置的配置文件
volumes:
# 第一个是宿主机要存放数据的目录,第二个参数一般就是固定的应用再真实主机存放数据的目录
- /home/fengxinzi/datas/dockertest/mysql/:/var/lib/mysql
# 通过depends_on告诉docker-compose当前服务启动之前先要把depends_on指定的服务启动起来才行。例如:kafka依赖zookeeper,nginx依赖php-fpm等等。,这里是依赖的redis服务
depends_on:
- redis
# 容器的名
container_name: db
#应用服务的名
dockertest:
# 在这里使用这个是因为应用可以被打包为镜像
build:
dockerfile: Dockerfile
# 执行目录就是项目的根目录
context: .
restart: always
# 端口的映射
ports:
- "8866:8877"
# links的目的是把一个服务的名称在当前服务里面创建一个别名,例如:持久化服务的名称和当前服务的配置文件里面写的不一样,就可以通过这个links改成一样的。本质上就是这个服务里的相应name,也就是可以使用外部的其他服务,这里把服务名添加进来就可以,
links:
- db
- redis
这个服务必须要在db启动后再启动
depends_on:
- db
container_name: dockertest
redis:
restart: always
# 从docker拉取的镜像
image: redis:latest
container_name: redis
ports:
- "6399:6379"
volumes:
# 第一个是宿主机要存放数据的目录,第二个参数一般就是固定的应用再真实主机存放数据的目录
- /home/fengxinzi/datas/dockertest/redis/data/:/data
如果是需要没有要构建的服务,可以直接使用以下命令:
docker-compose up
如果需要先构建镜像就要先build
docker-compose build
文章分类