docker部署SpringBoot项目简单流程
一、docker基础命令理解学习
1、常见命令
docker启动之前要关闭防火墙
systemctl stop firewalld # 关闭防火墙
systemctl disable firewalld # 禁止开机启动防火墙
systemctl start docker # 启动docker服务
systemctl stop docker # 停止docker服务
systemctl restart docker # 重启docker服务
2、Docker镜像
docker images #查看已拉取的镜像
docker pull apply:tag #拉取镜像 apply为应用名称 tag为版本号若不加":tag"则拉取的是最新版本
docker rmi name:tag #删除镜像 name为镜像名称
docker save -o name.tar name:tag #保存镜像 name.tar为保存文件名称+后缀
docker load -i name.tar #docker加载镜像
3、Docker容器
docker run:创建并运行一个容器,处于运行状态
docker pause:让一个运行的容器暂停
docker unpause:让一个容器从暂停状态恢复运行
docker stop:停止一个运行的容器
docker start:让一个停止的容器再次运行
docker rm:删除一个容器
4、创建并运行nginx容器
docker run --name mn -p 80:80 -d nginx 进入nginx容器 docker exec -it nginx bash docker logs name docker ps -a#查看容器运行状态 -a表示查看所有容器包括已经停止的
5、数据卷(数据卷用来映射容器与宿主机上的数据,保证了数据的复用以及隔离)
docker volume create name //创建一个数据卷
docker volume inspect name //查看一个或多个数据卷的详细信息
docker volume ls //查看所有数据卷
docker volume rm name //删除指定数据卷
docker volume prune //删除未使用的数据卷
docker run --name nginx -p 80:80 -v html:/usr/share/nginx/html -d nginx //创建一个容器并将其html数据卷挂载至容器中的html
二、前端部署
Vue项目部署至服务器过程
1、把vue项目打包执行npm run build得到dist文件夹
2、将Vue项目制作为一个镜像需要下述文件
1.1.dist文件夹
1.2.Dockerfile
FROM nginx
//镜像维护者
MAINTAINER zx
RUN rm /etc/nginx/conf.d/default.conf
ADD default.conf /etc/nginx/conf.d/
COPY dist/ /usr/share/nginx/html/
1.3.default.conf
server {
listen 80;
server_name 47.93.38.162; # 修改为docker服务宿主机的ip
location / {
root /usr/share/nginx/html;
index index.html index.htm;
try_files $uri $uri/ /index.html =404;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
将上述文件放入服务器所创建的文件夹当中
3、执行构建镜像命令
docker build -t ilpfront:1.0 .
4、创建容器
docker run -p 9090:80 --name iflfront -d ilpfront:1.0
三、后端部署
打包后端项目
要注意打包前将自己代码中的localhost如数据库连接配置以及Redis配置改为自己的云服务器ip地址 否则docker部署之后连接会失效,这是由于每个容器相当于一个独立的运行环境docker为其分配的ip也有所不同故使用localhost会无效
1、在pom.xml中复制如下打包配置
<!--打包配置-->
<packaging>jar</packaging>
<!--Maven插件用于打包Spring Boot应用程序-->
<build>
<!--项目打包名称-->
<finalName>ILFDemo</finalName>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<version>${spring-boot.version}</version>
<!--SpringBoot启动类地址-->
<configuration>
<mainClass>com.sias.bootdemo.BootDemoApplication</mainClass>
</configuration>
<executions>
<execution>
<goals>
<goal>repackage</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
2、更新Maven后直接点击Maven的package
3、迁移至服务器准备镜像构建所需文件
在服务器上找一个合适的路径创建文件夹如/tmp/WebDemo
在WebDemo文件夹中需要如下三个文件
Dockerfile
# 指定基础镜像
FROM ubuntu:16.04
# 配置环境变量,JDK的安装目录
ENV JAVA_DIR=/usr/local
# 拷贝jdk和java项目的包将ILFDemo.jar改为自己的项目名.jar
COPY ./jdk8.tar.gz $JAVA_DIR/
COPY ./ILFDemo.jar /tmp/app.jar
# 安装JDK
RUN cd $JAVA_DIR \
&& tar -xf ./jdk8.tar.gz \
&& mv ./jdk1.8.0_144 ./java8
# 配置环境变量
ENV JAVA_HOME=$JAVA_DIR/java8
ENV PATH=$PATH:$JAVA_HOME/bin
# 暴露端口
EXPOSE 8080
# 入口,java项目的启动命令
ENTRYPOINT java -jar /tmp/app.jar
4、创建镜像
准备好三的文件后在/tmp/WebDemo目录下输入如下指令
docker build -t webdemo:1.0 .
5、创建容器
docker run --name WebDemo -p 8090:8080 -d webdemo:1.0
8080为上面dockerfile文件后端暴漏的端口
四、数据库部署
1、拉取mysql镜像或者上传mysql.tar文件上传至服务器并将其加载为镜像 要注意自己项目所用的mysql版本我用的是5.7.25
2、数据卷挂载文件以及文件夹准备
2.1、创建/tmp/mysql/conf/hmy.cnf配置文件
hmy.cnf
[mysqld]
skip-name-resolve
character_set_server=utf8
datadir=/tmp/mysql
server-id=1000
explicit_defaults_for_timestamp=1
2.2、创建/tmp/mysql/data文件夹
3、创建容器
#创建容器
docker run \
#命名容器
--name mysql \
#配置Mysql密码
-e MYSQL_ROOT_PASSWORD=123 \
#端口映射
-p 3306:3306 \
#mysql配置文件数 据卷挂载
-v /tmp/mysql/conf/hmy.cnf:/etc/mysql/conf.d/hmy.cnf \
#mysql存储文件数据卷挂载
-v /tmp/mysql/data:/var/lib/mysql \
#容器后台运行
-d \
mysql:5.7.25
五、注意事项
1、mysql被攻击
谨防自己的mysql被攻击勒索,如果出现数据库容器创建后不久便频繁宕机并且上传的数据也全部消失可重新启动数据库查看数据库表很有可能找到勒索者留下的信息,我们的数据一般也不重要,单位了防止黑客频繁攻击我们可以在云服务器配置上面设置防火墙,只允许本地ip连接3306也就是数据库端口这样就可以通过可视化工具随时操作远程数据库了。
2、端口开放
我们创建并运行容器后一定要对外开放设置的端口号要不然云服务器会对请求进行拦截如阿里云开放端口操作步骤
设置的端口号就是自己创建容器时的映射端口如docker run --name mn -p 8090:80 file:1.0
8090就是对外暴漏的映射端口
完成如上步骤一个项目通过docker容器部署就简单完成了,如果部署顺利的话可以通过自己的服务器ip:前端所设置的端口号如我的辅助学习网站平台
大家如果有兴趣的话可以多光顾一下我的项目期待大家的各类建议
Fashion点点智能学习辅助平台——》http://xdlo.top