services
services 节点下面的即是定义的各种服务,服务之下为容器,容器与容器直之间可以以服务名称为域名进行访问。
image
指定运行的镜像名称。
指定镜像为 mysql5.7image: mysql:5.7
container_name
指定容器名称。
容器名称container_name: admin_mysql
ports
指定宿主机和容器的端口映射。
映射 mysql端口ports:
- 3306:3306
volumes
将宿主机的文件或目录挂载到容器中。
挂载 mysql 目录到容器volumes:
-
/itwxe/dockerData/mysql/data:/var/lib/mysql
-
/itwxe/dockerData/mysql/conf:/etc/mysql
-
/itwxe/dockerData/mysql/log:/var/log/mysql
environment
配置环境变量。
设置 mysql 密码environment:
- MYSQL_ROOT_PASSWORD=root
links
连接其他容器的服务。
可以 admin_mysql 为域名访问服务名称为 db 的容器links:
- db:admin_mysql
启动所有相关容器
docker-compose up -d
指定文件启动
docker-compose -f docker-compose.yml up -d
停止所有相关容器
docker-compose stop
列出所有容器信息
docker-compose ps
停止并删除所有容器(注意数据挂载)
docker-compose down
三、SpringBoot示例
此处还是以自己写的项目为示例,我的项目依赖 MySQL、Redis、minio(非必要)。
1、打包 SpringBoot 项目镜像,打包可以参考 Docker使用maven插件打包SpringBoot项目。
2、我的项目启动依赖 MySQL 中的 sunny 库,首先得创建容器,挂载宿主机目录,可以参考 Docker搭建MySQL并挂载数据。
3、项目依赖 Redis 镜像自定义配置启动,可以参考 Docker搭建Redis5.0并挂载数据。
4、修改项目 MySQL 和 Redis 使用别名访问,以 MySQL 为例。
修改前jdbc:mysql://192.168.5.33:3306/sunny?useUnicode=true&characterEncoding=utf8mb4&serverTimezone=GMT%2B8
修改后jdbc:mysql://admin_mysql:3306/sunny?useUnicode=true&characterEncoding=utf8mb4&serverTimezone=GMT%2B8
5、编辑 docker-compose.yml 文件。
version: ‘3’
services:
指定MySQL服务名称mysql:
指定服务使用的镜像image: mysql:5.7
指定容器名称container_name: admin_mysql
指定服务运行的端口ports:
- 3306:3306
volumes:
-
/itwxe/dockerData/mysql/data:/var/lib/mysql
-
/itwxe/dockerData/mysql/conf:/etc/mysql
-
/itwxe/dockerData/mysql/log:/var/log/mysql
environment:
- MYSQL_ROOT_PASSWORD=123456
redis:
使用自定义镜像(指定配置文件)image: itwxe/redis:5.0.8
container_name: admin_redis
ports:
- 6379:6379
volumes:
- /itwxe/dockerData/redis/data:/data
sunny-admin:
指定服务使用的镜像image: itwxe/sunny-admin:0.0.1
指定容器名称container_name: sunny-admin
指定服务运行的端口ports:
- 9002:9002
volumes:
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)