docker项目部署的教程(Vue+springboot)

 更新时间:2025年04月28日 14:45:41   作者:我自飞扬临天下  
这篇文章主要介绍了docker项目部署的教程(Vue+springboot),具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教

1.docker安装(Ubuntu)

卸载原有的docker引擎和旧版本软件包(第一次使用跳过)

# 卸载 Docker Engine、CLI、containerd 和 Docker Compose 软件包:
sudo apt-get purge docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin docker-ce-rootless-extras

# 主机上的映像、容器、卷或自定义配置文件 不会自动删除。要删除所有镜像、容器和卷,请执行以下操作:
sudo rm -rf /var/lib/docker
sudo rm -rf /var/lib/containerd

# 删除源列表和密钥环
sudo rm /etc/apt/sources.list.d/docker.list
sudo rm /etc/apt/keyrings/docker.asc

# 卸载旧版本
for pkg in docker.io docker-doc docker-compose docker-compose-v2 podman-docker containerd runc; do sudo apt-get remove $pkg; done

使用存储库安装apt

#1.设置 Docker 的存储库(一行一行执行)

sudo apt-get update

sudo apt-get install ca-certificates curl

sudo install -m 0755 -d /etc/apt/keyrings

sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc

sudo chmod a+r /etc/apt/keyrings/docker.asc

echo \
  "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu \
  $(. /etc/os-release && echo "$VERSION_CODENAME") stable" | \
  sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
  
sudo apt-get update

# 2.安装 Docker 软件包
sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

# 3.启动docker 
systemctl start docker

# 4.查看是否运行,该命令为查看镜像
docker images

2.安装nginx并运行

# 拉取nginx镜像
docker pull nginx

# 创建nginx容器并且运行,
# -p 做宿主机与容器端口的映射
# -v 做数据挂载
# 注意(-v)后面(:)前面的html目录和nginx.conf文件需要自己创建
# (:)后面是固定的docker nginx容器目录
docker run -d\
  --name nginxR\
  -p 18080:18080\
  -p 18081:18081\
  -v /root/nginx/html:/usr/share/nginx/html\
  -v /root/nginx/nginx.conf:/etc/nginx/nginx.conf\
  nginx

注:

nginx.conf配置文件指定的前端目录所在位置要与容器内的位置相对于,不要直接写相对于宿主机的位置,否则服务器访问不到

3.安装Mysql

# 拉取mysql镜像
docker pull mysql

# 创建mysql容器并且运行,这里同样也要做数据挂载
# -v 做数据目录、初始化脚本(自己在该目录放置sql)、和配置文件(字符格式等配置)的挂载,
# 同样也要自己创建文件目录
docker run -d\
  --name mysql1.0\
  -p 3306:3306\
  -e TZ=Asia/Shanghai\
  -e MYSQL_ROOT_PASSWORD=root1234\
  -v /root/mysql/data:/var/lib/mysql\
  -v /root/mysql/init:/docker-entrypoint-initdb.d\
  -v /root/mysql/conf:/etc/mysql/conf.d\
  mysql

之所以做数据挂载就是防止容器出现问题挂掉,那么数据也随之消失,挂载到宿主机,即使容器挂掉,在创建新容器也能保持原有的数据

注意:实际开发环境中3306端口不对外暴露,容器内自定义网络互相访问

4.构建jdk镜像

准备条件(3样东西)

  • 一份 jdk.tar.gz 包
  • 一份自己的 java项目jar 包
  • 一份编写好的 Dockerfile 文件

拉取ubuntu镜像

docker pull ubuntu:24.04

Dockerfile

# 指定基础镜像
FROM ubuntu:24.04

#配置环境变量指定到容器内的目录(通过通过这个环境变量来引用/usr/local这个路径)
ENV JAVA_URL=/usr/local

# 拷贝jdk到容器内
COPY ./jdk17.tar.gz $JAVA_URL
#拷贝自己的项目的jar包到容器内
COPY musicservice-0.0.1-SNAPSHOT.jar /app.jar

#进入到下载了jdk的目录把他解压缩重命名java17
RUN cd $JAVA_URL && tar -zxf ./jdk17.tar.gz

#配置jdk环境变量,何在本地配置环境变量是一致的
ENV JAVA_HOME=$JAVA_URL/jdk17
#添加到系统搜索路径
ENV PATH=$PATH:$JAVA_HOME/bin

# 入口,java项目的启动命令
ENTRYPOINT ["java","-jar","/app.jar"]

注意:

16行的jdk17一定要与jdk17.tar.gz解压出来的文件名一致

不然报错:

executable file not found in $PATH: unknown.

Dockerfile简洁版

ubuntu、jdk、jar 三者构成springboot基本运行环境

FROM ubuntu:24.04

COPY jdk17.tar.gz /usr/local
COPY my.jar /app.jar

RUN cd /usr/local && tar -xf jdk17.tar.gz && rm jdk17.tar.gz && apt-get update && apt-get install -y iputils-ping

ENV PATH=/usr/local/jdk-17.0.12/bin:$PATH

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

这里RUN多加了一个ping工具

构建java镜像

# 构建java镜像
docker build -t javajar .

# 注意:末尾的点不要忽略了,javajar是自定义镜像名

创建并运行java容器

docker run -d --name javajar1.0 -p 8888:8888 javajar

5.网络配置

docker容器都是相互隔离的,要将三部分加入同一个网络,就能互相访问了

自定义网络

docker network create mynet

加入网络

docker network connect mynet nginx1.0
docker network connect mynet mysql1.0
docker network connect mynet javajar1.0

ping命令

# 如果需要进入到容器内部检查连通性,就需要ping
docker exec -it javajar1.0 bash
# docker中是没有ping命令的,需要自己安装
apt-get update
apt-get install iputils-ping

6.注意事项

由于通过自定义网络后就可以通过容器名访问

我们springboot后端访问数据库直接用容器名访问即可

**解决:**

为了解决mysql容器ip发生变化而访问不了的问题,javajar是容器名。

nginx代理访问后端也用容器名访问即可

示例:

proxy_pass http://javajar:8888

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • docker镜像、容器消失两种解决办法小结

    docker镜像、容器消失两种解决办法小结

    在进行系统更新时,很有可能对Docker造成一定的影响,导致其下载的镜像和容器被清理掉,这篇文章主要介绍了docker镜像、容器消失两种解决办法的相关资料,需要的朋友可以参考下
    2025-08-08
  • Docker在CentOS7下不能下载镜像timeout的解决办法(图解)

    Docker在CentOS7下不能下载镜像timeout的解决办法(图解)

    本文给大家记录下Docker在CentOS7下不能下载镜像timeout问题的解决方法,非常不错,具有参考借鉴价值,感兴趣的朋友一起看看吧
    2016-11-11
  • Ollma本地部署Qwen2.5 14B的详细过程(不使用docker)

    Ollma本地部署Qwen2.5 14B的详细过程(不使用docker)

    本文介绍了如何在不使用Docker的情况下部署Ollama模型和Open-webui实现可视化界面,Ollama模型通过命令行操作,包括启动、创建、运行等,Open-webui则需要安装Anaconda环境,安装并启动服务后,通过浏览器访问即可使用,感兴趣的朋友跟随小编一起看看吧
    2024-11-11
  • docker安装mysql并实现数据卷挂载的示例代码

    docker安装mysql并实现数据卷挂载的示例代码

    本文介绍了如何通过Docker安装MySQL并实现了数据卷挂载,详细说明了创建容器、配置挂载以及验证数据持久性的步骤,对于需要在Docker环境下部署MySQL的用户非常有帮助
    2024-10-10
  • 解决docker容器重启之后/etc下某些配置文件被重置的问题

    解决docker容器重启之后/etc下某些配置文件被重置的问题

    这篇文章主要介绍了解决docker容器重启之后/etc下某些配置文件被重置的问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2021-03-03
  • 解决运行Docker镜像报错:version `GLIBC_2.32‘ not found问题

    解决运行Docker镜像报错:version `GLIBC_2.32‘ not found

    文章介绍了解决Docker镜像运行时因GLIBC版本不匹配导致的错误,建议使用AlpineLinux作为基础镜像,并在其中安装所需的运行时库,作者还分享了个人经验,提醒读者尝试其他方法无效后可以寻求帮助
    2024-12-12
  • Docker常见的错误和异常整理大全

    Docker常见的错误和异常整理大全

    这篇文章主要给大家介绍了关于Docker常见的错误和异常整理的相关资料,文中通过代码示例介绍的非常详细,对新手们学习Docker具有一定的参考借鉴价值,需要的朋友可以参考下
    2023-08-08
  • docker-compose部署zk+kafka+storm集群的实现

    docker-compose部署zk+kafka+storm集群的实现

    这篇文章主要介绍了docker-compose部署zk+kafka+storm集群,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-10-10
  • 使用docker compose安装harbor私有仓库的详细教程

    使用docker compose安装harbor私有仓库的详细教程

    harbor镜像仓库是由VMware开源的一款企业级镜像仓库,它包括权限管理(RBAC)、LDAP、日志审核、管理界面、自我注册、镜像复制等诸多功能,本文给大家介绍docker compose安装harbor的方法,需要的朋友参考下吧
    2021-06-06
  • 云原生Docker容器自定义DNS解析

    云原生Docker容器自定义DNS解析

    Docker没有为每个容器专门定制镜像,那么怎么自定义配置容器的DNS配置呢?这篇文章主要给大家介绍了关于云原生Docker容器自定义DNS的相关资料,需要的朋友可以参考下
    2023-02-02

最新评论