唠嗑部分
之前我们说了docker-compose的安装使用及一些常用软件的安装哈,相关文章:
【docker】docker-compose实战之MySQL安装与配置
【docker】docker-compose实战之Redis的安装与配置
今天我们来说一说如何部署SpringBoot项目,主要是说一说流程,总体而言这个流程是比较复杂的。
后期也会出一个前后端分离项目的部署,像React、Vue项目如何部署哈,还是有含金量的。
这两期文章的安排呢实际是为了出后面的CICD流水线配置,两者形成一个鲜明的对比
那下面我们就来说说如何部署
言归正传
小白首先准备了一个demo,样式随便写了点,凑合看吧,毕竟这不是重点
1、使用maven对项目进行打包
2、编写Dockerfile文件
FROM 基于镜像java:8
ADD 复制命令,复制当前目录下的*.jar到java/app.jar
EXPOSE 声明暴露的端口
WORKDIR 声明工作目录
RUN 运行脚本
ENTRYPOINT 执行命令,不可覆盖
CMD 执行命令,可覆盖
FROM java:8
ADD *.jar java/app.jar
EXPOSE 2023
WORKDIR java
RUN echo 'Asia/Shanghai' >/etc/timezone
ENTRYPOINT ["java","-jar","app.jar","--spring.profiles.active=prod"]
CMD ["--server.port"]
3、编写docker-compose.yml文件
下面的主要解释一下,常见的见文章:
networks 声明网络,处在同一网络下的服务可使用容器名通讯
depends_on 优先级,即mysql先启动。在启动java-app
version: '3.1'
services:
mysql:
image: mysql:5.7
container_name: cxs.mysql.com
environment:
- MYSQL_ROOT_PASSWORD=root
volumes:
- /home/mysql/sql/:/usr/local/sql/
- /home/mysql/etc/:/etc/mysql/conf.d/
networks:
- cxs-app
java-app:
build:
context: ./
dockerfile: Dockerfile
image: book-manager-sys:1.0
container_name: java-app
command: "--server.port=2023"
depends_on:
- mysql
volumes:
- /etc/localtime:/etc/localtime:ro
networks:
- cxs-app
networks:
cxs-app:
4、上传jar包、init.sql、Dockerfile、docker-compose.yml
在home目录下创建mysql/etc,mysql/sql目录,将init.sql放于mysql/sql下
在mysql/etc创建配置文件mysql.cnf,内容如下
[client]
default-character-set=utf8
[mysqld]
character-set-server=utf8
结构如下,安装mysql之前的文章说过,就不详细说明了
在/home/java-app目录下执行命令
docker-compose up -d --build
出现下图即可,然后进行下一步
查看容器运行状态是否正常
docker-compose ps
进入mysql容器,执行初始化脚本
docker exec -it cxs.mysql.com bash
执行如下命令
mysql -uroot -proot < /usr/local/sql/init.sql
退出来,Ctrl+p+q
访问页面,我的虚拟机ip是10.10.10.10:http://10.10.10.10:2023/index.html
大功告成,鼓掌
结语
1、资料获取,jar包及初始化sql文件会放置于公众号后台,关注全栈小白公众号,回复关键字获取:java20230314
2、下期预告,前后端分离项目部署
3、您的点赞支持是我最大的动力,抱拳了