之前部署的springboot项目是直接使用的jar包形式,因此每次本地有什么更新都要先push到仓库,然后更换生产环境打成jar包,最后部署到服务器上后重启服务,很是麻烦,因此研究了一下docker-compose部署springboot项目,这样每次更新更简单了不说,因为docker各个容器之间是隔离的,所以部署不同的项目jdk冲突时也只需要pull不同版本的jdk,十分方便。
环境准备
安装CURL
若服务器本地有curl可直接跳过此步骤
更新软件源
sudo apt-get update
安装CURL
sudo apt install curl
验证是否安装成功
curl
出现一下信息即安装成功

安装docker
使用官方的自动安装脚本
curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun
也可以使用国内daocloud一键安装命令
curl -sSL https://get.daocloud.io/docker | sh
安装docker-compose
使用daocloud路径快速安装
sudo curl -L https://get.daocloud.io/docker/compose/releases/download/1.25.1/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose
添加可执行权限
sudo chmod +x /usr/local/bin/docker-compose
注意,dockers-compose是在/usr/local/bin路径下
项目部署
新建spring boot项目
注意要打成jar包
配置pom文件
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>2.2.2</version>
</dependency>
<dependency>
<groupId>org.apache.httpcomponents</groupId>
<artifactId>httpclient</artifactId>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.24</version>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
<build>
//最后jar包的包名
<finalName>api-server</finalName>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
配置application.yml文件
server:
port: 8085
tomcat:
max-http-header-size: 3145728
servlet:
context-path: /api
session:
timeout: 2592000 # 30天
新建docker-compose.yml文件
version: "3"
x-base-server:
&base-server
image: maven:3-openjdk-8-slim
ports:
- 8085:8085
volumes:
- .:/app
- ./.m2:/root/.m2
- /etc/localtime:/etc/localtime
working_dir: /app
command: sh -c "mvn -DskipTests=true clean package && java -jar -server ./target/api-server.jar"
services:
dev:
<< : *base-server
environment:
TZ : "Asia/Shanghai"

运行测试

测试成功!
上传Github仓库
上传github仓库是为了项目更新时更加方便
具体操作看贴《学习笔记》–使用git将本地项目push到github仓库 – 珂朵莉の小窝 (chthollywn.xyz)
全局配置命令
查看当前用户名和邮箱
git config user.name
git config user.email
修改当前用户名和邮箱
git config --global user.name "xxx"
git config --global user.email "xxx"
生成ssh密钥
ssh-keygen -C 'youremail' -t rsa
生成的密钥文件在/home/.ssh中,若用户为root,密钥在/root/.ssh中。
打开id_rsa.pub文件,复制所有内容到GitHub或Gitee即可注册ssh密钥
服务器部署项目
首先在/usr/local目录下新建文件夹server
cd /usr/local
mkdir server
克隆项目
git clone xxx
进入项目目录,在该目录中创建docker-compose容器
docker compose up -d
带-d标识符为后台运行
在该目录中,运行server镜像
docker compose start
因为在docker-compose.yml文件中配置了相关镜像及打包配置,因此使用start命令后会自动构建镜像,然后将项目打成jar包并运行
查看容器运行情况
docker compose ps

使用公网ip+端口号访问服务

访问成功!
重启镜像命令
docker compose restart [server-name]
停止镜像命令
docker compose stop [server-name]
删除容器命令
docker compose rm
Comments NOTHING