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

文章介绍了如何在生产环境中使用Docker容器部署SpringBoot应用,通过maven的docker插件生成镜像,并开启Docker远程服务。接着,演示了如何安装和连接MySQL容器,利用Navicat进行数据库管理。在配置文件修改后,将应用打包成jar,创建Docker镜像并运行。然而,在运行过程中遇到了模板解析错误,日志显示可能的问题与模板解析有关。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

为了节约资源,在生产环境中我们更多的是使用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

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

深海鱼肝油ya

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

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

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

打赏作者

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

抵扣说明:

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

余额充值