IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 系统运维 -> springboot + docker 实现远程部署 -> 正文阅读

[系统运维]springboot + docker 实现远程部署

前言:
centos + docker + jdk1.8 + idea
亲测有效!!!

1.demo项目
在这里插入图片描述

@SpringBootApplication
public class DockerApplication {
    public static void main(String[] args) {
        SpringApplication.run(DockerApplication.class, args);
    }
}
@RestController
public class DockerController {
    @RequestMapping("/")
    public String index() {
        return "Hello Docker!";
    }
}
  <spring.boot.version>2.1.0.RELEASE</spring.boot.version>
<dependencies>
  <dependency>
       <groupId>org.springframework.boot</groupId>
       <artifactId>spring-boot-dependencies</artifactId>
       <version>${spring.boot.version}</version>
       <type>pom</type>
       <scope>import</scope>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-test</artifactId>
        <scope>test</scope>
    </dependency>
</dependencies>

启动项目,访问url 成功即可!!!

2.docker 相关文件
在pom.xml中加入

<properties>
        <docker.image.prefix>springboot</docker.image.prefix>
    </properties>

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
            <!-- Docker maven plugin -->
            <plugin>
                <groupId>com.spotify</groupId>
                <artifactId>docker-maven-plugin</artifactId>
                <version>1.2.0</version>
                <configuration>
                    <!-- 镜像名称  -->
                    <imageName>${docker.image.prefix}/${project.artifactId}</imageName>
                    <!-- Dockerfile 文件目录 -->
                    <dockerDirectory>${project.basedir}/src/main/docker</dockerDirectory>
                    <!-- docker远程服务地址 ,前提是docker服务器需开启远程访问-->
                    <dockerHost>http://192.168.1.12:2375</dockerHost>
                    <resources>
                        <resource>
                            <targetPath>/</targetPath>
                            <!-- 资源所在目录 -->
                            <directory>${project.build.directory}</directory>
                            <!-- 生成的.jar文件 -->
                            <include>${project.build.finalName}.jar</include>
                        </resource>
                        <resource>
                            <targetPath>/</targetPath>
                            <!-- 资源所在目录 -->
                            <directory>${project.build.outputDirectory}</directory>
                        </resource>
                    </resources>
                </configuration>
            </plugin>
            <!-- Docker maven plugin -->
        </plugins>
    </build>

注意这里面 imageName 标签中的名字必须都为小写!!!如果有大写会报错!!

Dockerfile

# 基础镜像使用java
FROM openjdk:8-jdk-alpine
# VOLUME 指定了临时文件目录为/tmp。
# 其效果是在主机 /var/lib/docker 目录下创建了一个临时文件,并链接到容器的/tmp
VOLUME /tmp
# 将jar包添加到容器中并更名为app.jar
ADD projecttodocker-1.0-SNAPSHOT.jar  app.jar
# 运行jar包
RUN /bin/sh  -c 'touch /app.jar'
ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"]

projecttodocker-1.0-SNAPSHOT.jar 为jar后的文件,根据自己的项目修改

打包指令
在这里插入图片描述
在new goal 中输入 保存后运行

clean package -DskipTests docker:build

如果发生错误,显示的是连接问题,那么我们需要手动打开docker对外端口
vim /lib/systemd/system/docker.service
修改一下代码

#原代码
ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock
#改为
ExecStart=/usr/bin/dockerd -H fd:// -H tcp://0.0.0.0:2375  --containerd=/run/containerd/containerd.sock

保存后,再执行

# 重新加载守护进程配置
systemctl daemon-reload   
# 重启 docker 服务       
systemctl restart docker.service 

如果上述指令没成功,请检查docker.service文件,一定有代码错误的地方。
如果是阿里云或者腾讯云,一定要记得在安全控制台中开放相应端口!!!

再次执行导包指令,看到success则为成功。
进入docker中 查看

docker images  #查看镜像
#启动服务
docker run -itd --name 容器名  -p 8080:8080 镜像名:版本号
#查看容器是否启动
docker ps

正常启动后,在浏览器输入网址 即可查看

附录:
小编在使用中,遇到了很多问题。如果问题实在无法解决的时候,可以采用jar包上传服务器的方法进行。下面我就简单的给大家说一下:
1.利用idea打包生成jar包 (方法同上)
在这里插入图片描述
将红框中的文件上传到服务器中
建议目录为 /opt/docker/jar ,两个文件必须在同一级目录下

#cd 到文件夹下  执行
docker build -t name:tag .
例如: docker build -t project:v1.0 .   #一定要在结尾加这个点!!

执行成功后,我们可以查看docker镜像,后续步骤同上。

经验之谈:
现在网上的解决方案,都是各式搬运,各种代码缺失,各种错误漏洞,简直是误人子弟。建议各位同学在学习过程中,多看几个文章,多试几个例子。取长补短,形成自己的解决方案。

参考文献:
https://blog.csdn.net/appleyk/article/details/87367281
https://blog.csdn.net/ic_esnow/article/details/113284475
https://blog.csdn.net/qq_31104725/article/details/107319320?utm_medium=distribute.pc_relevant.none-task-blog-2defaultbaidujs_title~default-1.control&spm=1001.2101.3001.4242

  系统运维 最新文章
配置小型公司网络WLAN基本业务(AC通过三层
如何在交付运维过程中建立风险底线意识,提
快速传输大文件,怎么通过网络传大文件给对
从游戏服务端角度分析移动同步(状态同步)
MySQL使用MyCat实现分库分表
如何用DWDM射频光纤技术实现200公里外的站点
国内顺畅下载k8s.gcr.io的镜像
自动化测试appium
ctfshow ssrf
Linux操作系统学习之实用指令(Centos7/8均
上一篇文章      下一篇文章      查看所有文章
加:2021-08-24 15:57:18  更:2021-08-24 16:02:25 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/15 12:06:07-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码