Docker进阶篇-Docker微服务实战

一、通过IDEA新建一个普通微服务模块

1、建Moduel

bash 复制代码
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.5.6</version>
    </parent>

    <groupId>org.study</groupId>
    <artifactId>test-docker</artifactId>
    <packaging>pom</packaging>
    <version>1.0-SNAPSHOT</version>
    <modules>
        <module>docker_boot</module>
    </modules>

    <properties>
        <maven.compiler.source>8</maven.compiler.source>
        <maven.compiler.target>8</maven.compiler.target>
    </properties>

</project>

2、改POM

bash 复制代码
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <parent>
        <artifactId>test-docker</artifactId>
        <groupId>org.study</groupId>
        <version>1.0-SNAPSHOT</version>
    </parent>
    <modelVersion>4.0.0</modelVersion>

    <artifactId>docker_boot</artifactId>

    <properties>
        <maven.compiler.source>8</maven.compiler.source>
        <maven.compiler.target>8</maven.compiler.target>
    </properties>

    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-actuator</artifactId>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>
</project>

3、写YML

bash 复制代码
server:
  port: 6001

4、主启动

bash 复制代码
package com.study;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

/**
 * @author tengyer 2022/05/06 16:34
 */
@SpringBootApplication
public class DockerBootApplication {
    public static void main(String[] args) {
        SpringApplication.run(DockerBootApplication.class, args);
    }
}

5、业务类

bash 复制代码
package com.study.controller;

import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController;

import java.util.UUID;

/**
 * @author tengyer 2022/05/06 16:35
 */
@RestController
public class OrderController {
    @Value("${server.port}")
    private String port;

    @RequestMapping("/order/docker")
    public String helloDocker() {
        return "hello world \t" + port + "\t" + UUID.randomUUID().toString();
    }

    @RequestMapping(value = "/order/index", method = RequestMethod.GET)
    public String index() {
        return "服务端口号:" + "\t" + port + "\t" + UUID.randomUUID().toString();
    }
}

二、通过Dockerfile发布微服务部署到docker容器

1、IDEA工具里面打包微服务jar包

在IDEA中正常运行,将其使用mavenpackage 打包成jar 包并上传到**/mydocker/**目录下。

2、编写Dockerfile

在/mydocker/目录下新建Dockerfile文件

bash 复制代码
vim Dockerfile

# 基础镜像使用java
FROM java:8
# 作者
MAINTAINER fanhe
# VOLUME指定临时文件目录为/tmp,在主机/var/lib/docker目录下创建一个临时文件并链接到容器的/tmp
VOLUME /tmp
# 将jar包添加到容器中并更名为springboot_docker.jar
ADD docker_boot-0.0.1-SNAPSHOT.jar /fanhe_docker.jar
# 运行jar包
RUN bash -c 'touch /fanhe_docker.jar'
ENTRYPOINT ["java", "-jar", "/fanhe_docker.jar"]
# 暴露6001端口作为微服务
EXPOSE 6001

3、构建镜像

bash 复制代码
docker build -t fanhe_docker:1.6 .

4、运行容器

bash 复制代码
docker run -d -p 6001:6001 --name springboot fanhe_docker:1.6
相关推荐
团象科技37 分钟前
2026出海趋势观察:国际云服务器推荐重构企业全球化经营底盘
运维·服务器·重构
Elastic 中国社区官方博客1 小时前
Elastic 9.4:Workflows 正式发布、Agent Builder 更新,以及 Prometheus / PromQL 支持
运维·数据库·人工智能·elasticsearch·搜索引擎·信息可视化·prometheus
徐子元竟然被占了!!2 小时前
STUN 协议
运维
wljy12 小时前
二、静态库的制作和使用
linux·c语言·开发语言·c++
mzhan0172 小时前
Linux: coredump产生对程序退出的影响
linux·运维·服务器
利来利往3 小时前
ubuntu设置永不休眠
运维·服务器
光电笑映3 小时前
从环境变量到进程虚拟地址空间——Linux 内存管理的底层脉络
linux·服务器·c++·c
遇印记3 小时前
软考知识点
运维·服务器·网络
源远流长jerry3 小时前
Linux 网络收包机制:从网卡到 Socket 的完整路径
linux·运维·服务器·网络·网络协议·tcp/ip
qq_364371723 小时前
基于 Docker 容器化环境配置
运维·docker·容器