项目实战之旅游网(十四)项目部署-Docker

news2024/9/23 3:22:56

为了节约资源,在生产环境中我们更多的是使用Docker容器部署SpringBoot应用,

我们要用maven里的docker插件来生成镜像并且远程连接Docker,

开启远程docker服务:

# 修改docker配置文件
vim /lib/systemd/system/docker.service

把ExecStart的原内容删除,替换为下面的内容即可

原内容:

ExecStart=/usr/bin/dockerd-current \
          --add-runtime docker-runc=/usr/libexec/docker/docker-runc-current \
          --default-runtime=docker-runc \
          --exec-opt native.cgroupdriver=systemd \
          --userland-proxy-path=/usr/libexec/docker/docker-proxy-current \
          --init-path=/usr/libexec/docker/docker-init-current \
          --seccomp-profile=/etc/docker/seccomp.json \
          $OPTIONS \
          $DOCKER_STORAGE_OPTIONS \
          $DOCKER_NETWORK_OPTIONS \
          $ADD_REGISTRY \
          $BLOCK_REGISTRY \
          $INSECURE_REGISTRY \
          $REGISTRIES

新内容:

其实就是配置了远程访问docker的端口。

# 在ExecStart=后添加配置,远程访问docker的端口为2375
ExecStart=/usr/bin/dockerd-current -H tcp://0.0.0.0:2375 -H unix://var/run/docker.sock \
          --add-runtime docker-runc=/usr/libexec/docker/docker-runc-current \
          --default-runtime=docker-runc \
          --exec-opt native.cgroupdriver=systemd \
          --userland-proxy-path=/usr/libexec/docker/docker-proxy-current \
          --init-path=/usr/libexec/docker/docker-init-current \
          --seccomp-profile=/etc/docker/seccomp.json \
          $OPTIONS \
          $DOCKER_STORAGE_OPTIONS \
          $DOCKER_NETWORK_OPTIONS \
          $ADD_REGISTRY \
          $BLOCK_REGISTRY \
          $INSECURE_REGISTRY \
          $REGISTRIES
# 重启docker
systemctl daemon-reload
systemctl restart docker

安装Mysql容器:

docker pull mysql:5.7
docker run -itd --name travel_mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=root mysql:5.7

使用本地Navicat连接生产端的mysql(我这里我的生产端就是我的虚拟机,没搞服务器)

用ip addr命令查看到虚拟机地址是192.168.191.138

新建连接:

然后在我们的新的连接当中新建一个travel数据库,字符集是utf-8

然后我们项目中那个用到的那个travel数据库转储(右键转储SQL文件)到一个地方(自己定),然后再把这个导出的sql文件导入(右键运行SQL文件)到咱们新建的travel数据库中。

修改配置文件:

修改application.yml:

修改url,注意与之前的不同,改了之后是具体的url和端口;然后thymeleaf的配置在生产环境中是必须要配置的;以及项目路径也要改成具体的,如下。

#项目路径
project:
  #path: http://localhost
  path: http://192.168.191.138

再在pom.xml中配置插件

<!-- docker-maven-plugin-->
            <plugin>
                <groupId>com.spotify</groupId>
                <artifactId>docker-maven-plugin</artifactId>
                <version>1.2.2</version>
                <configuration>
                    <!-- Docker路径,ip地址是服务器的地址-->
                    <dockerHost>http://192.168.191.138:2375</dockerHost>
                    <!-- Dockerfile定义 -->
                    <baseImage>openjdk:8</baseImage>
                    <!-- 作者 -->
                    <maintainer>first</maintainer>
                    <resources>
                        <resource>
                            <!-- 复制jar包到docker容器指定目录 -->
                            <targetPath>/</targetPath>
                            <!-- 从哪个包拷贝文件,target包 -->
                            <directory>${project.build.directory}</directory>
                            <!-- 拷贝哪个文件 -->
                            <include>${project.build.finalName}.jar</include>
                        </resource>
                    </resources>
                    <workdir>/</workdir>
                    <entryPoint>["java", "-jar", "${project.build.finalName}.jar"]</entryPoint>
                    <forceTags>true</forceTags>
                    <!-- 镜像名 -->
                    <imageName>${project.artifactId}</imageName>
                    <!-- 镜像版本 -->
                    <imageTags>
                        <imageTag>${project.version}</imageTag>
                    </imageTags>
                </configuration>
            </plugin>

刷新一下maven,然后用package把项目打成jar包,如下:

上一步完成之后,再用如下工具创建一个docker镜像

然后回到我们的服务器(我们的虚拟机)上,

docker run -d -p 80:80 travel:0.0.1-SNAPSHOT

可以看到我们的容器已经在运行了,所以我们现在访问我们的项目试试

http://192.168.191.138/frontdesk/index

白搭,看了看日志那个问题又出现了,1000是查看前1000行日志

docker logs --tail=1000 容器id

日志中显示的错误:

开发的时候遇到过一次,解决了,然后部署到docker上之后又出现了这个问题,人已经麻了。

template might not exist or might not be accessible by any of the configured Template Resolvers

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/132466.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

简阅人体姿态估计深度学习方法-simpread-Human Pose Estimation Deep Learning Approach

What is Human Pose Estimation? Human Pose Estimation (HPE) is a way of identifying and classifying the joints in the human body Human Pose Estimation(HPR 人体姿态估计)是一个对人体关节进行识别和分类的方法。 Essentially it is a way to capture a set of co…

Good Bye 2022: 2023 is NEAR C. Koxia and Number Theory

原题链接&#xff1a;Problem - C - Codeforces 题意&#xff1a; 给定一个长度为n的数组&#xff0c;请问是否存在一个数 x &#xff0c;使得任意两个数 与满足 。若是输出 YES &#xff0c;反之输出 NO 。 思路&#xff1a; 我们可以发现一个规律&#xff1a; 规律&#…

本周大新闻|沙特PIF再投Magic Leap,周融资超5.1亿美元

本周大新闻&#xff0c;AR方面&#xff0c;OVER推出众包AR地图Map2Earn&#xff1b;AR房产平台homeAR推扫码看房功能&#xff1b;苹果智能指环专利公布&#xff0c;支持手势和触觉反馈。 VR方面&#xff0c;奇遇MIX正式发布&#xff1b;AjnaLens将发布新XR头显&#xff1b;Gen…

Cartesi 2022 年 12 月回顾

查看你不想错过的更新2022 年 12 月 31 日 &#xff0c;我们将继续保持高昂的建设斗志一直持续到2023年。我们在2022年年底前参加了两次编程马拉松&#xff0c; 并不是一次。我们将 Cartesi 的技术带给了ETH India 活动的2000 多名建设者&#xff0c;我们还与 SuperwomenDAO 合…

RabbitMQ消息确认

目录 1. 消息确认作用 2 开发示例 2.1 生产者确认 2.2 消费者确认 1. 消息确认作用 保证消息的可靠性主要依靠三种机制&#xff1a;一个是消息的持久化&#xff0c;一个是事务机制&#xff0c;一个就是消息的确认机制。 1&#xff09;消息持久化 消息持久化是将消息写入…

卷径计算详解(卷径通过卷绕的膜长和膜厚进行计算)

有关卷绕+张力控制可以参看专栏的系列文章,文章链接如下: 变频器简单张力控制(线缆收放卷应用)_RXXW_Dor的博客-CSDN博客_收放卷应用张力控制的开闭环算法,可以查看专栏的其它文章,链接地址如下:PLC张力控制(开环闭环算法分析)_RXXW_Dor的博客-CSDN博客。https://blo…

双向链表的双向冒泡排序、红白蓝砾石排序、算法设计4-5

&#xff08;PS&#xff1a;直接拿的友友zy的&#xff09; 一个不知名大学生&#xff0c;江湖人称菜狗 original author: jacky Li Email : 3435673055qq.com Time of completion&#xff1a;2023.1.1 Last edited: 2023.1.1 目录 &#xff08;PS&#xff1a;直接拿的友友zy的…

添加USB wifi驱动到RK3568

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录前言一、USB接口的wifi芯片二、使用步骤wireless tools 移植wireless tools 工具测试wpa_supplicant 移植openssl 移植libnl 库移植WIFI 联网测试总结前言 在日常开…

CTF-Web渗透(入门|笔记|工具)

php各种漏洞绕过 传送门&#xff1a;https://cloud.tencent.com/developer/article/2127498 php伪协议 详细博客讲解&#xff1a; https://blog.csdn.net/cosmoslin/article/details/120695429 http://hummer.vin/2022/05/10/PHP%E4%BC%AA%E5%8D%8F%E8%AE%AE/ https://ww…

Codeforces Round #833 (Div. 2)

题目链接 A. The Ultimate Square 题意&#xff1a; 给你一个n&#xff0c;表示有n块砖&#xff0c;第i块砖是1*(i/2)&#xff0c;这里是上取整&#xff0c;问你最大能组合成的正方形的边长是多少 思路&#xff1a; 观察样例就会发现是n/2上取整&#xff0c;下面看代码&…

快速了解网络原理

作者&#xff1a;~小明学编程 文章专栏&#xff1a;JavaEE 格言&#xff1a;热爱编程的&#xff0c;终将被编程所厚爱。 目录 局域网和广域网 局域网 局域网组建的方式 广域网 网络通信基础 IP地址 端口号 协议 什么是协议 协议分层 分层模型 OSI七层模型 TCP/IP…

Python解题 - CSDN周赛第18期 - 又见背包

卧床一周&#xff0c;一觉醒来&#xff0c;恍如隔世&#xff0c;做什么事都提不起兴趣&#xff0c;也不知道这算不算后遗症。 本期的题目还是比较简单的&#xff0c;也有几道做过的题。最后一道照搬过来的背包题也是比较经典的01背包了&#xff0c;整体感觉没有什么值得说的&am…

linux常用命令(四)- 文件备份解压缩

查看压缩文件信息 - zipinfo zipinfo命令用于列出压缩文件信息。 语法 zipinfo [-12hsvz][压缩文件]-1 只列出文件名称。-2 此参数的效果和指定"-1"参数类似&#xff0c;但可搭配"-h",“-t"和”-z"参数使用。-h 只列出压缩文件的文件名称。-s…

c++11 标准模板(STL)(std::deque)(四)

定义于头文件 <deque> std::deque 元素访问 访问指定的元素&#xff0c;同时进行越界检查 std::deque<T,Allocator>::at reference at( size_type pos ); const_reference at( size_type pos ) const; 返回位于指定位置 pos 的元素的引用&#xff0c;有边…

如何在PVE(Proxmox)中安装OpenWrt软路由?

出处&#xff1a; https://www.928wang.cn/archives/1763.html https://blog.itwk.cc/post/pve_install_openwrt.html 工具准备 WinSCP或者XFTPOpenWrt镜像(自行寻找)安装好PVE的主机一台 安装教程 镜像上传 将下载好的OpenWrt img镜像上传到 PVE主机中(这里使用XFTP工具) 选…

MySQL中的DDL、DML、DCL、DQL

SQL分类 DDL(Data Definition Language)数据定义语言 用来定义数据库对象&#xff1a;数据库&#xff0c;表&#xff0c;列等。关键字&#xff1a;create, drop,alter 等 DML(Data Manipulation Language)数据操作语言 用来对数据库中表的数据进行增删改。关键字&#xff1a;i…

vue-element-表格 Excel 【导入】功能 (2023元旦快乐~~~)

一、页面表格导入功能 我们借鉴vue-element-admin文件来学习表格导入功能,如果你有vue-element-admin的完整文件&#xff0c;可以去这里找 or 用我这里的代码 1. 整体复制到你要用到的页面 <template><div class"app-container"><upload-excel-com…

unreal engine 纹理动态运动的实现

先用ps涉及一张图,发光的地方为白色 下图实际上边缘是相连的白色 split_line.jpgue新建材质 基础色vector3 随便选择一个偏灰的颜色 自发光 TextureCoordirate ->Panner->图片rgb->*发光常量 * 20自发光 预览效果 通过修改纹理协调器的V垂直平铺控制条纹数量 image.pn…

mybatis插件

Configuration组成 Mapper映射器 3个部分组成&#xff1a; MappedStatement 保存一个节点(select | insert | update | delete) &#xff0c;包括我们配置的sql&#xff0c;&#xff0c;sql的id&#xff0c;&#xff0c;缓存信息&#xff0c;&#xff0c;resultMap,parameterT…

Redis高并发锁(三)分布式锁

在很多情况下&#xff0c;你的数据库不支持事务&#xff0c;分布式部署也使得你无法去使用JVM锁&#xff0c;那么这种时候&#xff0c;你可以考虑用分布式锁 文章目录分布式锁1. 实现方式2. 特征3. 操作4. 代码改造5. 测试优化1. 递归改成循环2. 防止死锁3. 防误删4. LUA脚本 保…