当前位置: 代码迷 >> 综合 >> linux + docker-compose 部署 jar + dist
  详细解决方案

linux + docker-compose 部署 jar + dist

热度:63   发布时间:2023-11-19 15:28:53.0

linux + docker-compose 部署 jar + dist


第一次使用docker-compose部署jar包和vue项目打包的dist文件夹,
下载demo
准备好Linux系统,并且已经使用FinalShell之类的工具连接成功,
后台打包的jar包,
前端打包的dist文件夹


文章目录

  • linux + docker-compose 部署 jar + dist
  • 一、在linux系统上安装docker-compose
      • 1.安装docker-compose
      • 2.将可执行权限应用于二进制文件
      • 3.测试是否安装成功
  • 二、想一想
  • 三、部署后台jar
  • 四、部署前端dist


一、在linux系统上安装docker-compose

1.安装docker-compose

sudo curl -L "https://github.com/docker/compose/releases/download/v1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose

版本自己选择,更改v1.29.2版本号就行了,最新版本查看

如果超时,请使用

curl -L  https://get.daocloud.io/docker/compose/releases/download/1.29.2/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose

2.将可执行权限应用于二进制文件

sudo chmod +x /usr/local/bin/docker-compose

3.测试是否安装成功

docker-compose --version

在这里插入图片描述

二、想一想

所有的准备工作已经做完了,现在停下来想一想,jar包,dist文件夹我们必然要上传到Linux服务器,不然其他的都是扯淡,但是我们放到什么地方,怎样的目录结构,这个得想明白,不然部署完成后,回头在看,强迫症表示非常难受.
我想的目录结构
在这里插入图片描述
在这里插入图片描述

以上只是众多问题中的一个,现在想一想,捋一捋,下面正式开始:

三、部署后台jar

首先把项目打包成jar,上传到服务器指定的位置
在这里插入图片描述
docker-compose.yml文件配置

version: '3'
# 后台
services:rhcms-api: #spring boot的服务名,服务名自定义#容器名称container_name: rhcms-api#image是指定服务的镜像名称或镜像ID。如果镜像在本地不存在,Compose将会尝试拉取镜像。image: java:8restart: alwaysenvironment:TZ: Asia/Shanghai#ports用于映射端口的标签。使用HOST:CONTAINER格式或者只是指定容器的端口,宿主机会随机映射端口。ports:- "18089:18089"#挂载文件夹volumes:- ./backend/RHCMS-0.0.1-SNAPSHOT.jar:/data/RHCMS-0.0.1-SNAPSHOT.jar#启动容器后执行的命令entrypoint: java -jar /data/RHCMS-0.0.1-SNAPSHOT.jar

还有网络什么的相关设置,不太懂,就没写.
这样就可以进入docker-compose.yml同级目录下
使用

docker-compose up 启动
docker-compose down 关闭

四、部署前端dist

首先把项目打包成dist,上传到服务器指定的位置

在这里插入图片描述

nginx.conf文件配置


user  nginx;
worker_processes  1;error_log  /var/log/nginx/error.log warn;
pid        /var/run/nginx.pid;events {
    worker_connections  1024;
}http {
    include       /etc/nginx/mime.types;default_type  application/octet-stream;log_format  main  '$remote_addr - $remote_user [$time_local] "$request" ''$status $body_bytes_sent "$http_referer" ''"$http_user_agent" "$http_x_forwarded_for"';access_log  /var/log/nginx/access.log  main;sendfile        on;keepalive_timeout  65;# include /etc/nginx/conf.d/*.conf;server {
    listen       8000;charset utf-8;server_name  192.168.10.177;# 服务器地址或绑定域名# start ---------------------------------------------------------------------------------------------location / {
    root   /usr/share/nginx/html;index  index.html index.htm;try_files $uri $uri/ /index.html;}# location / {
    
# proxy_pass http://192.168.10.177:18089/;
# }location /api/ {
    proxy_pass http://192.168.10.177:18089/;}# end ---------------------------------------------------------------------------------------------error_page   500 502 503 504  /50x.html;location = /50x.html {
    root   /usr/share/nginx/html;}}}

docker-compose.yml文件配置


version: '3'
# 后台
services:rhcms-api: #spring boot的服务名,服务名自定义#容器名称container_name: rhcms-api#image是指定服务的镜像名称或镜像ID。如果镜像在本地不存在,Compose将会尝试拉取镜像。image: java:8restart: alwaysenvironment:TZ: Asia/Shanghai#ports用于映射端口的标签。使用HOST:CONTAINER格式或者只是指定容器的端口,宿主机会随机映射端口。ports:- "18089:18089"#挂载文件夹volumes:- ./backend/RHCMS-0.0.1-SNAPSHOT.jar:/data/RHCMS-0.0.1-SNAPSHOT.jar#启动容器后执行的命令entrypoint: java -jar /data/RHCMS-0.0.1-SNAPSHOT.jar# 前端 rhcms-api-web:container_name: rhcms-api-webimage: nginx:latestrestart: alwaysenvironment:TZ: Asia/Shanghaiports:- "8000:8000"volumes:- ./frontend/nginx.conf:/etc/nginx/nginx.conf:ro- ./frontend/dist/:/usr/share/nginx/html/:rocommand: [nginx-debug, '-g', 'daemon off;']

之后的mysql之类的就是同理可得,自己研究研究

本项目完整的docker-compose.yml文件配置

version: '3'
# 后台
services:rhcms-api: #spring boot的服务名,服务名自定义#容器名称container_name: rhcms-api#image是指定服务的镜像名称或镜像ID。如果镜像在本地不存在,Compose将会尝试拉取镜像。image: java:8restart: alwaysenvironment:TZ: Asia/Shanghai#ports用于映射端口的标签。使用HOST:CONTAINER格式或者只是指定容器的端口,宿主机会随机映射端口。ports:- "18089:18089"#挂载文件夹volumes:- ./backend/RHCMS-0.0.1-SNAPSHOT.jar:/data/RHCMS-0.0.1-SNAPSHOT.jar#启动容器后执行的命令entrypoint: java -jar /data/RHCMS-0.0.1-SNAPSHOT.jar# 后台的前端 rhcms-api-web:container_name: rhcms-api-webimage: nginx:latestrestart: alwaysenvironment:TZ: Asia/Shanghaiports:- "8000:8000"volumes:- ./frontend/nginx.conf:/etc/nginx/nginx.conf:ro- ./frontend/dist/:/usr/share/nginx/html/:rocommand: [nginx-debug, '-g', 'daemon off;']# miniominio:image: minio/minio:latestcontainer_name: minioports:- "9000:9000"- "9001:9001"restart: alwayscommand: server --console-address ":9001" /dataenvironment:MINIO_ACCESS_KEY: adminMINIO_SECRET_KEY: admin@123logging:options:max-size: "50M"max-file: "10"driver: json-filevolumes:- ./minio/data:/data# mysqlmysql:image: mysql:5.7.34container_name: mysql_containerrestart: alwaysports:- "3306:3306"volumes:- ./mysql/data:/var/lib/mysql- ./mysql/conf/my.cnf:/etc/my.cnfenvironment:- "MYSQL_DATABASE=root"- "MYSQL_ROOT_PASSWORD=root123"- "TZ=Asia/Shanghai"