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"