Docker部署SpringBoot+Vue前后端分离项目

25 篇文章 3 订阅
12 篇文章 0 订阅

全部代码

#停止所有容器
docker stop $(docker ps -a -q)

#删除所有容器
docker rm $(docker ps -aq)

#删除所有镜像
docker rmi -f $(docker images -qa)

#删除旧Docker
sudo yum remove docker \
						   docker-client \
						   docker-client-latest \
						   docker-common \
						   docker-latest \
						   docker-latest-logrotate \
						   docker-logrotate \
						   docker-engine
						 
						 
#安装Docker
yum install docker -y

#启动Docker
service docker start

#停止Docker
service docker stop

#重启Docker
service docker restart

#配置Docker镜像加速器
sudo tee /etc/docker/daemon.json <<-'EOF'
{
    "registry-mirrors": ["https://mirror.ccs.tencentyun.com"]
}
EOF

#查看Docker运行状态
systemctl status docker

配置Nginx

# 创建挂载目录
mkdir -p /home/nginx/conf

mkdir -p /home/nginx/log

mkdir -p /home/nginx/html

# 生成容器
docker run --name nginx -p 8080:8080 -d nginx

# 将容器文件复制到宿主机
docker cp nginx:/etc/nginx/nginx.conf /home/nginx/conf/nginx.conf

docker cp nginx:/etc/nginx/conf.d /home/nginx/conf/conf.d

docker cp nginx:/usr/share/nginx/html /home/nginx/

# 删除nginx
docker ps -a

docker stop nginx

docker rm nginx

docker ps -a

# 创建新nginx,挂载文件
docker run \
-p 8080:8080 \
--name nginx \
-v /home/nginx/conf/nginx.conf:/etc/nginx/nginx.conf \
-v /home/nginx/conf/conf.d:/etc/nginx/conf.d \
-v /home/nginx/log:/var/log/nginx \
-v /home/nginx/html:/usr/share/nginx/html \
-d nginx:latest

docker ps

curl 81.68.232.188:8080

配置MySQL

docker run -d --restart=always \
--privileged=true \
-v /home/mysql/data:/var/lib/mysql \
-v /home/mysql/conf:/etc/mysql/conf.d \
-v /home/mysql/my.cnf:/etc/mysql/my.cnf \
-p 3306:3306 \
--name mysql \
-e MYSQL_ROOT_PASSWORD=root mysql:8.0

docker images

打包后台

#压缩项目编写Dockerfile,上传

Dockerfile

FROM openjdk:8

COPY *.jar /app.jar

EXPOSE 8001 # 后端端口,和yml文件里的项目端口一致

ENTRYPOINT ["java","-jar","app.jar"]

cd /home/api

docker build -t api .

docker images

# 宿主机端口:容器端口
docker run -d -p 8001:8001 --name api api

docker ps

打包前台

npm run build

编写default.conf和Dockerfile,上传

#default.conf

server {
    listen  8080;
    server_name  81.68.232.188; # 修改为docker服务宿主机的ip

    location / {
        root /usr/share/nginx/html;
        index index.html index.htm;
        try_files $uri $uri/ /index.html =404;
    }
	
    location /api {
      proxy_pass http://81.68.232.188:8001/; # Nginx代理的后台IP端口
    }
	
    # 静态资源映射
    location /image/userAvatar/ {
      root /home/image/userAvatar/; # 映射地址
      autoindex on;
    }

    error_page 500 502 503 504 /50x.html;
    location = /50x.html {
        root html;
    }
}

#Dockerfile

FROM nginx

MAINTAINER ZJ

ENV TimeZone=Asia/Shanghai

COPY dist  /usr/share/nginx/html/

COPY default.conf /etc/nginx/conf.d

EXPOSE 8080

cd /home/vue

docker build -t vue .

# 前端容器端口:Nginx端口
docker run -d -p 80:8080 --name vue vue

docker ps

删除Docker


#停止所有容器
docker stop $(docker ps -a -q)

#删除所有容器
docker rm $(docker ps -aq)

#删除所有镜像
docker rmi -f $(docker images -qa)

#删除旧Docker
sudo yum remove docker \
						   docker-client \
						   docker-client-latest \
						   docker-common \
						   docker-latest \
						   docker-latest-logrotate \
						   docker-logrotate \
						   docker-engine
						   

安装Docker


#安装Docker
yum install docker -y

#启动Docker
service docker start

#停止Docker
service docker stop

#重启Docker
service docker restart

#配置Docker镜像加速器
sudo tee /etc/docker/daemon.json <<-'EOF'
{
    "registry-mirrors": ["https://mirror.ccs.tencentyun.com"]
}
EOF

#查看Docker运行状态
systemctl status docker

在这里插入图片描述

配置Nginx


# 创建挂载目录
mkdir -p /home/nginx/conf

mkdir -p /home/nginx/log

mkdir -p /home/nginx/html

# 生成容器
docker run --name nginx -p 8080:8080 -d nginx

在这里插入图片描述

# 将容器文件复制到宿主机
docker cp nginx:/etc/nginx/nginx.conf /home/nginx/conf/nginx.conf

docker cp nginx:/etc/nginx/conf.d /home/nginx/conf/conf.d

docker cp nginx:/usr/share/nginx/html /home/nginx/

# 删除nginx
docker ps -a

docker stop nginx

docker rm nginx

在这里插入图片描述

# 创建新nginx,挂载文件
docker run \
-p 8080:8080 \
--name nginx \
-v /home/nginx/conf/nginx.conf:/etc/nginx/nginx.conf \
-v /home/nginx/conf/conf.d:/etc/nginx/conf.d \
-v /home/nginx/log:/var/log/nginx \
-v /home/nginx/html:/usr/share/nginx/html \
-d nginx:latest

docker ps

在这里插入图片描述

配置MySQL


docker run -d --restart=always \
--privileged=true \
-v /home/mysql/data:/var/lib/mysql \
-v /home/mysql/conf:/etc/mysql/conf.d \
-v /home/mysql/my.cnf:/etc/mysql/my.cnf \
-p 3306:3306 \
--name mysql \
-e MYSQL_ROOT_PASSWORD=root mysql:8.0

docker images

Navicat链接MySQL数据库

在这里插入图片描述

打包后台

压缩项目,编写Dockerfile,上传服务器

#Dockerfile

FROM openjdk:8

COPY *.jar /app.jar

EXPOSE 8001 # 后台端口,和yml文件里的项目端口一致

ENTRYPOINT ["java","-jar","app.jar"]

在这里插入图片描述

上传到服务器

在这里插入图片描述

创建镜像和容器

cd /home/api

docker build -t api .

docker images

# 宿主机端口:后台容器端口
docker run -d -p 8001:8001 --name api api

docker ps

在这里插入图片描述

打包前台

配置好后端请求地址IP和端口,打包项目

npm run build

在这里插入图片描述

编写default.conf和Dockerfile文件

#default.conf

server {
    listen  8080; # Nginx端口
    server_name  81.68.232.188; # 修改为docker服务宿主机的ip

    location / {
        root /usr/share/nginx/html;
        index index.html index.htm;
        try_files $uri $uri/ /index.html =404;
    }
	
    location /api {
      proxy_pass http://81.68.232.188:8001/; # Nginx代理的后台IP端口
    }
	
    # 静态资源映射
    location /image/userAvatar/ {
      root /home/image/userAvatar/; # 映射地址
      autoindex on;
    }

    error_page 500 502 503 504 /50x.html;
    location = /50x.html {
        root html;
    }
}

在这里插入图片描述

#Dockerfile

FROM nginx

MAINTAINER ZJ

ENV TimeZone=Asia/Shanghai

COPY dist  /usr/share/nginx/html/

COPY default.conf /etc/nginx/conf.d

EXPOSE 8080 # Nginx端口

在这里插入图片描述

构建前端镜像和容器

cd /home/vue

docker build -t vue .

# 前端容器端口:Nginx端口
docker run -d -p 80:8080 --name vue vue

docker ps

在这里插入图片描述

测试

输入IP:前端容器的端口

在这里插入图片描述

  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

BirdMan98

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值