00.背景
最近学校让一个小组做一个web项目最后部署到linux服务器上,项目本身并不难就是简单的增删改查,但是我想借着这个机会写一个docker部署的模板,方便自己以后用,也希望可以帮助到大家。
01.docker简介
docker可以快捷 轻量 高效 简单的部署服务,docker有两个重要概念 镜像(image)与容器(container) 镜像可以理解为类 容器可以理解为对象,假如我们需要部署一个web项目 这个项目由 vue springboot mysql构成,我们就可以先创造所需的镜像,再创造对应的容器 容器之间进行交互 最终实现这个服务。容器与容器之间是相互隔离的 只有身处同一个网络才能交互,一个镜像产生可以由很多容器。
02.环境整体目录
蓝色节点是目录 红色节点是压缩包 其余是文件。
03.所需材料
这是一个简单的web项目,总共有四大部分,前端vue 后端springboot 数据库mysql 以及nginx服务器。
04.创造镜像
拉取镜像
docker pull nginx
docker pull openjdk:8
docker pull mysql:5.7
这里我们拉取了三个镜像
nginx:用于反向代理 可以简单的理解为 我们前端的请求都会通过nginx进行转发
openjdk:8:jdk8 Java运行环境 我们的springboot项目需要java支持
mysql:5.7 :mysql数据库
除了这三个镜像外我们还需要springboot后端的镜像
05.创造后端镜像
首先我们要用maven打包
我们把打包出来的app.jar放到app目录下
编写dockerfile文件
FROM openjdk:8
EXPOSE 8080
ADD ./app.jar /app.jar
RUN bash -c 'touch /app.jar'
ENTRYPOINT ["java","-jar","/app.jar","--spring.profiles.active=prod"]
dockerfile文件的作用是创造一个镜像,这个镜像创造过程有许多层,例如第一层是FROM openjdk:8 作用就是在openjdk:8环境的基础上搭建镜像,EXPOSE 8080则是这个镜像创造的容器向外暴露的端口
用dockerfile构建后端镜像app
在app目录下构建后端镜像
docker build -f ./dockerfile -t app .
查看现有镜像
docker images
可以看到我们现在有四个镜像,分别是app后端镜像、nginx服务器镜像、mysql镜像、jdk8镜像
06.创造mysql容器
我们首先创造宿主机(本机linux服务器)目录
mkdir -p /mnt/docker/mysql
cd /mnt/docker/mysql
创造mysql容器
docker run -id \
-p 3307:3306 \
--name=mysql \
-v /mnt/docker/mysql/data:/var/lib/mysql