docker部署springboot和vue

本文详细介绍了如何在CentOS系统中安装Docker,部署MySQL,然后分别部署SpringBoot和Vue项目。首先,通过yum安装Docker并设置开机启动,接着安装MySQL。随后,不需配置环境变量在线安装JDK1.8,验证安装成功后部署SpringBoot应用。最后,将Vue的dist目录挂载到Docker容器中,设置只读权限,并配置Nginx代理实现访问。此外,还提供了开机自启动脚本的编写和配置方法。

docker安装(centos)

添加yum安装源

 sudo yum install -y yum-utils
 sudo yum-config-manager \
    --add-repo \
    https://download.docker.com/linux/centos/docker-ce.repo

ps:如果yum命令找不到:apt-get update->apt-get install yum

安装docker引擎

 sudo yum install docker-ce docker-ce-cli containerd.io -y

启动docker并验证docker引擎是否安装成功

 sudo systemctl start docker
 sudo docker pull hello-world
 sudo docker run hello-world

若出现错误:

Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?

则执行守护进程重新加载命令,并重新启动docker服务:

 systemctl daemon-reload
 sudo service docker restart

若出现如下图,则安装成功:
在这里插入图片描述

设置docker开机自启动

 sudo chkconfig docker on

到此docker安装成功。
docker仓库地址:https://hub.docker.com/
官网安装地址:https://docs.docker.com/engine/install/centos/

安装mysql

 sudo docker pull mysql:5.7
 sudo docker run --name 容器名 -e MYSQL_ROOT_PASSWORD=数据库密码 -d -p 宿主机端口:3306 --restart=always mysql:5.7 
 sudo docker run -p 3307:3306 -v /opt/mysql8/conf:/etc/mysql/conf.d -v /opt/mysql8/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=admin123 --name mysql8 -d --restart=always mysql:5.7

进入容器:

docker exec -it 容器id /bin/bash

此时远程连接成功,可对表数据库进行操作

部署springboot项目

在线安装jdk1.8,无需配置环境变量。默认安装路径:usr/lib/jvm/

 sudo yum install -y java-1.8.0-openjdk-devel.x86_64
 java -version

jdk安装验证成功
在这里插入图片描述

部署vue

:ro代表只读,将vue的dist目录放在宿主机目录下

$ sudo docker pull nginx:latest
$ sudo docker run --name some-nginx -v 宿主机目录:/usr/share/nginx/html:ro -d -p 宿主机端口:80 --restart=always nginx:latest

进入容器:(可能会需要更新apt-get,也可直接使用cat > 文件名)

$ cd /etc/nginx/conf.d
$ vim default.conf

添加location如下

location / {
        root   /usr/share/nginx/html/dist/;
        try_files $uri $uri/ @router;
        index  index.html index.htm;
}
location @router {
        rewrite ^.*$ /index.html last;
}

重新启动容器,此时项目可正常访问。

开机自启动脚本

1、编写脚本

docker restart
cd jar包位置
nohup java -jar -Duser.timezone=UTC -Xmx1024m -Xms1024m jar包 &

2、在/etc/rc.d/rc.local文件中追加脚本全路径,并给该文件添加权限:chmod +x /etc/rc.d/rc.local

### Docker部署Spring Boot与Vue项目的最佳实践 #### 一、概述 Docker容器化技术能够有效解决不同环境中应用程序运行的一致性问题。对于Spring BootVue这样的前后端分离架构项目,可以通过Docker Compose实现一键部署[^1]。 --- #### 二、前提条件 为了顺利进行部署操作,需具备以下基础知识: - **熟悉Docker基础**:理解镜像、容器的概念以及常用命令。 - **掌握Spring Boot与Vue开发技能**:能独立完成两个框架的应用构建。 - **了解YAML语法**:用于编写`docker-compose.yml`配置文件。 --- #### 三、具体步骤说明 ##### 1. 创建Spring Boot服务的Dockerfile 在Spring Boot项目的根目录下创建名为`Dockerfile`的文件,内容如下: ```dockerfile FROM openjdk:17-jdk-slim COPY target/your-application-name.jar app.jar ENTRYPOINT ["java", "-jar", "/app.jar"] ``` 此脚本定义了一个基于OpenJDK的基础镜像,并将编译好的`.jar`包复制进去作为启动入口[^2]。 ##### 2. 构建前端Vue应用并准备静态资源 进入Vue项目的根路径执行构建命令生成生产环境下的静态文件,默认会存放在`dist`文件夹内。之后可以利用Nginx来托管这些HTML/CSS/JS资产。 ```bash npm run build ``` 接着在同一层建立另一个专门服务于前端展示部分的Dockerfile实例: ```dockerfile FROM nginx:alpine COPY dist /usr/share/nginx/html EXPOSE 80 CMD ["nginx", "-g", "daemon off;"] ``` 这里选用轻量级版本的NGINX镜像加载之前产生的成果集[^3]。 ##### 3. 编写docker-compose.yml组合管理两套组件 在一个共同的工作空间里制定统一调度策略文档——即`docker-compose.yml`,样例如下所示: ```yaml version: '3' services: backend: image: your-backend-image-name container_name: spring-boot-container ports: - "8080:8080" environment: SPRING_DATASOURCE_URL: jdbc:mysql://db:3306/test?useSSL=false&serverTimezone=UTC depends_on: - db frontend: image: your-frontend-image-name container_name: vue-container ports: - "80:80" depends_on: - backend db: image: mysql:5.7 container_name: database-container restart: always environment: MYSQL_ROOT_PASSWORD: examplepassword MYSQL_DATABASE: testdatabase ``` 上述片段展示了三个相互关联的服务单元描述方式,其中包含后端逻辑处理模块(`backend`)、用户界面呈现区段(`frontend`)还有持久存储媒介(`db`)之间的协作关系。 --- #### 四、注意事项 - 确保所有涉及外部网络访问的部分都已设置恰当的安全防护措施。 - 定期更新所使用的官方基础镜像至最新稳定版以获得更好的性能表现及漏洞修复支持。 - 对于敏感数据比如数据库密码等建议采用更安全的方式传递而非明文形式硬编码进配置当中。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值