看完不会用,我倒立**,保姆级教学
docker部署项目
采用Dockerfile部署
docker-compose部署项目
docker-compose部署,实际上是对容器的编排,以及容器间的一些依赖
比如一个springboot项目,需要使用redis,mysql,es等组件,如果使用docker部署的话,先要拉去redis镜像,再创建容器启动,然后再拉去mysql镜像,再创建容器启动…依赖组件越多,操作越复杂,docker-compose就是解决这个问题的
准备环境:
Docker Desktop
安装好这个,docker和docker-compose都可以使用了
IDEA
项目地址github
项目是最基本的springboot项目,主要来看一下Dockerfile和docker-compose.yml文件
FROM openjdk
MAINTAINER zxz
ADD /target/compose-demo-1.0-SNAPSHOT.jar compose-demo.jar
EXPOSE 9999
ENTRYPOINT ["java","-jar","/compose-demo.jar"]
FROM openjdk:项目依赖与jdk
MAINTAINER zxz:作者信息,可以不要
ADD /target/compose-demo-1.0-SNAPSHOT.jar compose-demo.jar:maven打包后,会在target文件下生成compose-demo-1.0-SNAPSHOT.jar, 将其改名为compose-demo.jar
EXPOSE 9999:暴露端口
ENTRYPOINT [“java”,“-jar”,“/compose-demo.jar”]:执行的命令,此处可以加-D指定参数
使用docker build创建镜像:
docker build -f Dockerfile -t compose-demo .
创建的镜像如下图所示:
当然我们可以直接通过docker run运行(下图与命令行效果一致)
浏览器访问:
上面我们就通过Dockerfile部署spring boot项目了
下面进入正题,通过dockers-compse编排(以mysql为例)
打开docker-compose.yml文件,其中volumes数据卷你们需要改一下
version: "1"
services:
compose-demo:
image: compose-demo
container_name: compose-demo
ports:
- "9999:9999"
links:
- mysql
depends_on:
- mysql
mysql:
image: mysql:8.0-debian
container_name: mysql-compose
ports:
- "3306:3306"
- "33060:33060"
environment:
MYSQL_ROOT_PASSWORD: 12345678
volumes:
- E:\software\docker\volume\mysql\conf:/etc/mysql/conf.d
- E:\software\docker\volume\mysql\data:/var/log/mysql
- E:\software\docker\volume\mysql\data:/var/lib/mysql
粗略的解释一下:
services:是服务集合,里面包含compose-demo,mysql等(还可以加上redis等)
compose-demo:服务名(下面的mysql也是服务名)
image:镜像,如果镜像不存在,则会自动拉去镜像(docker.hub.com)
container_name:使用镜像生成的容器名
environment:创建容器携带的参数
ports:容器暴露的端口
volumes:数据卷(使用过docker创建mysql容器就知道这是什么东西)
数据卷格式 pathA:pathB(pathA宿主机路径,pathB容器路径)
depends_on:依赖于,这个用来控制容器启动顺序
执行指令
docker-compose up -d
会先拉去mysql镜像
备注:若出现navicate无法连接mysql时(lost connection to mysql server),重启一下mysql容器即可,亲测有效
然后会创建容器
生成的效果
至此,完成了