springboot+vue+docker部署
1.mysql
docker run -p 3307:3306 --name mysql \
-v /monkey/mysql/conf:/etc/mysql \
-v /monkey/mysql/logs:/var/log/mysql \
-v /monkey/mysql/data:/var/lib/mysql \
-e MYSQL_ROOT_PASSWORD=mysql1234 \
-d mysql:5.7
#命令说明:
-p 3307:3306 #将容器的3306端口映射到主机的3307端口
-v /monkey/mysql/conf:/etc/mysql \ #配置映射目录
-v /monkey/mysql/logs:/var/log/mysql \ #日志映射目录
-v /monkeyt/mysql/data:/var/lib/mysql \ #数据库数据映射目录
-e MYSQL_ROOT_PASSWORD=mysql1234 \ #设置密码(用户名默认root)
-d mysql:5.7 #指定mysql镜像
2.redis
docker run -p 6379:6379 \
-v /monkey/redis/data:/data \
--name redis -d redis redis-server --appendonly yes
#命令说明:(没有配置密码)
-p 6380:6379 #将容器的6379端口映射到主机的6380端口
-v /monkey/redis/data:/data #将主机中当前目录下的data挂载到容器的/data
redis-server --appendonly yes #在容器执行redis-server启动命令,并打开redis持久化配置
3.minio
### 注意: 密码过于简单可能导致访问不了
docker run -d -p 9000:9000 --name minio --restart=always\
-e "MINIO_ACCESS_KEY=minio" \
-e "MINIO_SECRET_KEY=minio1234" \
-v /monkey/minio/data:/data \
-v /monkey/minio/config:/root/.minio \
minio/minio server /data --console-address ":9000" --address ":9090"
# 测试
docker run -p 9090:9000 -p 9000:9090 --name minio -d --restart=always -e "MINIO_ACCESS_KEY=minio" -e "MINIO_SECRET_KEY=minio1234" -v /data/minio/data:/data -v /data/minio/config:/root/.minio minio/minio server /data --console-address ":9090" -address ":9000"
4.springboot
1)打包,jar包上传服务器
2)创建Dockerfile
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-vh5LaY2C-1650770969379)(.assets/image-20220424095729351.png)]
FROM java:8
VOLUME /tmp
ADD ruoyi-admin.jar ruoyi.jar
EXPOSE 8081
ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/ruoyi.jar"]
# FROM 运行环境【第一次自动安装java8 环境】
# VOLUME 内嵌Tomcat容器默认使用/tmp作为工作目录,持久化【不能更改】
# ADD 重命名jar包,并拷贝到容器
# EXPOSE 对外暴露端口好
# ENTRYPOINT 启动命令
缩短 Tomcat 的启动时间,添加java.security.egd的系统属性指向/dev/urandom作为 ENTRYPOINT
3)构建容器
docker build -t 容器名称 .
# . 会在当前目录下,寻找Dockerfile文件
4)运行容器
docker run -di --name 容器名称 -p 8081:8081 镜像名称
# -di 后台运行
# 8081:8081 对外端口号:jar包中的端口号【注意】
5)日志
docker logs -f --tail=100 容器名称
6)注意事项
- 服务器测试接口
curl http://localhost:8081/prod-api/captchaImage
- 进入容器
docker exec -it ruoyi bash
5.Vue
1)修改配置(vue.config.js)
const port = process.env.port || process.env.npm_config_port || 81 // 端口由80改为81
target: `http://139.9.189.49:8081`, //修改代理后端接口地址
2)打包
npm run build
3)nginx配置
- 目录结构
monkey
|
|--ruoyiweb
|
|—— 1.html //前端代码
|
|—— 2.logs //日志目录
|
|—— 3.config----1)nginx.conf //nginx配置
2)conf.d-------default.conf //vue默认配置
- 1.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;
}
- 2.deafult.conf配置文件【改】
server {
listen 81; #侦听81端口,如果强制所有的访问都必须是HTTPs的,这行需要注销掉
server_name 8.142.44.77; #域名
#【代理】特殊配置
location /prod-api/ {
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header REMOTE-HOST $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass http://8.142.44.77:8081/; #后端访问地址
}
# 定义首页索引目录和名称
location / {
root /usr/share/nginx/html;
try_files $uri $uri/ /index.html;
}
#重定向错误页面到 /50x.html
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/share/nginx/html;
}
}
- 3.html目录存放前端代码dist下的文件
4)启动容器
docker run --name ruoyiweb -d -p 81:81 \
-v /monkey/ruoyiweb/html:/usr/share/nginx/html \
-v /monkey/ruoyiweb/config/nginx.conf:/etc/nginx/nginx.conf \
-v /monkey/ruoyiweb/config/conf.d/default.conf:/etc/nginx/conf.d/default.conf \
-v /opt/projectTest/nginx/logs:/var/log/nginx/ \
--privileged=true nginx
# 说明
docker run
--detach
--name test-nginx
-p 443:443 #无认证不写
-p 81:81
#映射html
-v /home/nginx/html:/usr/share/nginx/html
#映射nginx.conf文件
-v /home/nginx/config/nginx.conf:/etc/nginx/nginx.conf/
#映射default.conf文件
-v /home/nginx/config/conf.d/default.conf:/etc/nginx/conf.d/default.conf
#映射log目录
-v /home/nginx/logs:/var/log/nginx/
#映射ssl目录
-v /home/nginx/ssl:/ssl/ #无认证不写
-d nginx
6.vue部署第二种方式
1)文件目录
docker
|
|—— dist //代码
|
|—— Dockerfile //vue配置
|
|—— nginx.conf //nginx配置
|
|—— buildImages.sh
- 1.nginx.conf配置文件
server {
listen 80; #侦听80端口,如果强制所有的访问都必须是HTTPs的,这行需要注销掉
#listen 443 ssl;
server_name 8.142.44.77; #域名
#charset koi8-r;
#access_log /var/log/nginx/host.access.log main;
# ssl_certificate /ssl/server.crt;
#ssl_certificate_key /ssl/server.key;
#ssl_session_cache shared:SSL:1m;
#ssl_session_timeout 5m;
#ssl_ciphers HIGH:!aNULL:!MD5;
#ssl_prefer_server_ciphers on;
#root /usr/share/nginx/html;
#index index.html index.htm;
#location / {
# try_files $uri $uri/ /index.html;
#}
# 定义首页索引目录和名称
location / {
root /usr/share/nginx/html;
try_files $uri $uri/ /index.html;
}
#定义错误提示页面
#error_page 404 /404.html;
#重定向错误页面到 /50x.html
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/share/nginx/html;
}
}
- 2.Dockerfile配置文件
FROM nginx
add dist /usr/share/nginx/html/
add nginx.conf /etc/nginx/conf.d
2)执行打包命令(要进入配置文件目录下)
docker build -t vuetest .
# -t 是给镜像取名。
# 最后有一个点 “.”,表示使用当前路径下的 dockerfile 文件,也可以指定使用其它路径的。
3)查看docker镜像中是否有刚打包好的镜像
docker images
4)运行docker镜像
docker run -p 81:80 -d --name vuetest vuetest
# -p :配置端口映射,格式是外部访问端口:容器内端口
# -d :后台运行
# --name : 给容器取名
# 最后有 2 个 sm-web,前面一个是给容器取的名字,后面一个是使用的镜像的名字