docker 部署 vue+springboot前端+后端 整合在一个镜像中

如果你自己独立开发了一套前后端分离的项目,想要把它放在一个docker镜像中,一键部署,真正做到开箱即用。

1、什么是docker

build once, run everywhere

2、打包前后端文件

2.1、打包前端文件

1.在项目下执行
注意!打包之前你的api不要设置成localhost或者127.0.0.1,而是要换成你等下要部署的服务器的ip地址

npm run build
//or
yarn build

2.会生成一个dist文件夹,里面就是你前端所有的代码,等会挂载到nginx服务上
在这里插入图片描述

2.2、打包后端文件

1.pom.xml里指定打包方式为jar包

<project>
	//意为在project下加入下面这个标签
	<packaging>jar</packaging>
</project>

2.打包
在这里插入图片描述
3.打包之后应该会在target下面生成jar包
在这里插入图片描述

3、制作docker镜像

注意:windows环境下也可以制作镜像,思路都是一样的
1.centos7下安装docker

# 安装依赖(以下是一整条命令)
yum install -y yum-utils \
  device-mapper-persistent-data \
  lvm2
# 设置仓库(以下是一整条命令)
yum-config-manager \
    --add-repo \
    https://download.docker.com/linux/centos/docker-ce.repo
# 安装docker
yum install docker-ce docker-ce-cli containerd.io
# 启动并加入开机启动
systemctl start docker
systemctl enable docker
# 验证是否安装成功
docker version

2.创建一个文件夹作为你制作镜像的根目录,然后把前后端打包的文件都传进去,可以用filezilla什么的,

3.在该目录下创建Dockerfile配置文件,至关重要

touch Dockerfile

4.编辑Dockerfile

# Docker image for springboot file run
# VERSION 0.0.1
# Author: cwiyc
# 基础镜像
FROM centos:8
# 维护人信息
MAINTAINER cwiyc <cwiyc922@gmail.com>
# VOLUME 指定了临时文件目录为/tmp。
# 其效果是在主机 /var/lib/docker 目录下创建了一个临时文件,并链接到容器的/tmp
VOLUME /tmp
# Centos8于2021年年底停止了服务,所以我们更新yum源为阿里镜像
RUN cd /etc/yum.repos.d/
RUN sed -i 's/mirrorlist/#mirrorlist/g' /etc/yum.repos.d/CentOS-*
RUN sed -i 's|#baseurl=http://mirror.centos.org|baseurl=http://vault.centos.org|g' /etc/yum.repos.d/CentOS-*
RUN yum -y install wget
RUN wget -O /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-vault-8.5.2111.repo
RUN yum clean all
RUN yum makecache
# 安装java
RUN yum -y install java
# 安装epel源
RUN yum -y install epel-release
# 安装nginx
RUN yum -y install nginx
# 将jar包添加到容器中并更名为app.jar
ADD orderonlineback-0.0.1-SNAPSHOT.jar app.jar
# 把自己本地的html里放的前端项目,放入nginx默认的资源目录里
COPY dist /usr/share/nginx/html
# 将自己的nginx.conf 配置文件放到docker里nginx默认的配置文件位置
COPY nginx.conf /etc/nginx/nginx.conf
# 暴露80端口
EXPOSE 80
# 运行jar包,ENTRYPOINT这条命令只能出现一次,如有多条,则只执行最后一条。该命令只有容器启动时才执行
ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"]

5.在该目录下创建nginx配置文件nginx.conf,这样你可以更灵活的配置nginx。
location那个地方的try_files $uri $uri/ /index.html一定要写,默认是没有的,不写的话你刷新页面会404

touch nginx.conf
user nginx;
worker_processes auto;
error_log /var/log/nginx/error.log;
pid /run/nginx.pid;

# Load dynamic modules. See /usr/share/doc/nginx/README.dynamic.
include /usr/share/nginx/modules/*.conf;

events {
    worker_connections 1024;
}

http {
    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;
    tcp_nopush          on;
    tcp_nodelay         on;
    keepalive_timeout   65;
    types_hash_max_size 2048;

    include             /etc/nginx/mime.types;
    default_type        application/octet-stream;

    # Load modular configuration files from the /etc/nginx/conf.d directory.
    # See http://nginx.org/en/docs/ngx_core_module.html#include
    # for more information.
    include /etc/nginx/conf.d/*.conf;

    server {
        listen       80 default_server;
        listen       [::]:80 default_server;
        server_name  _;
        root         /usr/share/nginx/html;

        # Load configuration files for the default server block.
        include /etc/nginx/default.d/*.conf;
        
        location / {
                try_files $uri $uri/ /index.html;
        }

        error_page 404 /404.html;
            location = /40x.html {
        }

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

}

6.制作镜像

// 注意最后的.
docker build -t 取个镜像名 .
//查看镜像,会出现你刚刚制作的镜像
docker images

在这里插入图片描述

4、新建一个容器运行镜像

提示:每一个镜像都需要运行在一个容器里
1.运行容器

# -d: 后台运行容器,并返回容器ID;
# -i: 以交互模式运行容器,通常与 -t 同时使用;
# -t: 为容器重新分配一个伪输入终端,通常与 -i 同时使用;
# --net="bridge": 指定容器的网络连接类型,支持 bridge/host/none/container: 四种类型;
docker run -itd  --name 取个容器名 --net=host 刚刚的镜像名
#例如 docker run -itd  --name bi43 --net=host backimage41
#查看正在运行的容器
docker ps

在这里插入图片描述
这时后端springboot项目已经运行了,我的是运行在9090
查看端口情况

netstat -ntlp
#如果没有这个命令,请安装
yum -y install net-tools

在这里插入图片描述
2.运行nginx

docker exec -it 刚刚的容器名 nginx
# 例如 docker exec -it bi43 nginx

这时nginx也启动起来了,80端口
在这里插入图片描述

5、保存制作好的镜像

1.保存镜像的改动

docker commit 刚刚的容器名 取一个新的镜像名
# 例如 docker commit bi43 bir1

此时生成了一个新的镜像,这就是你制作好的镜像。
在这里插入图片描述
2.阿里托管你的镜像
请看这个,push过程稍有些漫长
3.这时候你本地和远程仓库都有你的刚刚制作的镜像了,现在你只需要运行镜像即可(docker exec -it bi43 nginx这条命令还是需要执行来开启nginx)

6、mysql

至于mysql,centos7上mysql要付费了,所以要用的mariadb,它在数据的备份和还原上与mysql无痛交流
在这里插入图片描述

  • 1
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 5
    评论
当然,我可以为您提供一个详细教程来帮助您部署Vue+SpringBoot后端分离项目到云服务器上使用Docker。 首先,确保您已经完成以下准备工作: - 注册一个云服务提供商的账号,并创建一个服务器实例。 - 在本地环境安装了Docker,并熟悉Docker的基本操作。 - 本地已经安装了Node.js和npm,以及Vue CLI和Java开发环境。 以下是详细的步骤: 1. 登录到云服务器: 使用SSH工具连接到您的云服务器。例如,使用命令行工具执行以下命令: ``` ssh username@server_ip_address ``` 2. 安装Docker: 根据您的云服务器的操作系统,选择对应的安装方式进行Docker安装。以下是一些常见操作系统的安装命令: - Ubuntu: ``` sudo apt-get update sudo apt-get install docker.io ``` - CentOS: ``` sudo yum update sudo yum install docker ``` 3. 验证Docker安装是否成功: 执行以下命令来验证Docker是否已经成功安装: ``` docker version ``` 4. 构建Vue项目: 在本地开发环境,使用Vue CLI创建Vue项目,并进行开发和测试。确保项目可以正常运行。 ``` vue create myproject cd myproject npm run serve ``` 5. 打包Vue项目: 在Vue项目根目录下执行以下命令,将Vue项目打包成静态文件。 ``` npm run build ``` 6. 创建SpringBoot项目: 使用Spring Initializr创建SpringBoot项目,并进行开发和测试。确保项目可以正常运行。 - 访问Spring Initializr网站:https://start.spring.io/ - 选择项目的基本设置,如使用的编程语言、构建工具、Spring Boot版本等。 - 添加所需的依赖项,如Spring Web、Spring Data JPA等。 - 点击"Generate"按钮下载生成的SpringBoot项目压缩包。 - 解压缩项目压缩包,并使用您喜欢的集成开发环境(IDE)打开项目。 7. 创建Dockerfile: 在SpringBoot项目的根目录下创建一个名为`Dockerfile`的文件,用于定义Docker镜像的构建步骤。在`Dockerfile`添加以下内容: ``` FROM openjdk:8-jdk-alpine VOLUME /tmp ADD target/myproject.jar app.jar ENTRYPOINT ["java", "-jar", "/app.jar"] ``` 8. 构建Docker镜像: 在SpringBoot项目的根目录下执行以下命令,构建Docker镜像: ``` docker build -t myproject . ``` 9. 运行Docker容器: 执行以下命令,在Docker运行SpringBoot项目的Docker容器: ``` docker run -d -p 80:8080 myproject ``` 10. 访问应用: 使用浏览器访问您的云服务器的公网IP地址,即可查看部署好的前后端分离项目。 希望这个详细教程能够帮助您成功部署Vue+SpringBoot后端分离项目到云服务器上使用Docker。如果您有任何问题,请随时提问!

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

Cwiyc

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

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

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

打赏作者

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

抵扣说明:

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

余额充值