【docker】docker-compose实战之SpringBoot项目构建与部署
唠嗑部分
之前我们说了docker-compose的安装使用及一些常用软件的安装哈,相关文章:
今天我们来说一说如何部署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
大功告成,鼓掌