Docker微服务整合
1. 创建一个SpringBoot项目
创建docker-demo项目并打包
xml
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.7.18</version>
<relativePath />
</parent>
<properties>
<maven.compiler.source>8</maven.compiler.source>
<maven.compiler.target>8</maven.compiler.target>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
yml
server:
port: 6001
java
@RestController
public class UserInfoController {
@RequestMapping("/getUserInfo")
public UserInfo getUser(){
UserInfo userInfo = new UserInfo();
userInfo.setAge(33);
userInfo.setName("jack");
return userInfo;
}
}
java
@SpringBootApplication
public class AppMain {
public static void main(String[] args) throws Exception {
SpringApplication.run(AppMain.class, args);
}
}
java
public class UserInfo {
private String name;
private int age;
......get/set方法
}
2. 编写Dockerfile文件
ini
# using alpine-glibc instead of alpine is mainly because JDK relies on glibc
FROM jdk:8u212
# author
MAINTAINER jack
# java_env
ENV JAVA_HOME /usr/lib/jvm/java-1.8-openjdk
ENV PATH ${PATH}:${JAVA_HOME}/bin
ENV CLASSPATH ${CLASSPATH}:${JAVA_HOME}/lib/rt.jar:${JAVA_HOME}/lib/dt.jar:${JAVA_HOME}/lib/tools.jar
# run container with base path:/opt
WORKDIR /opt
VOLUME /tmp
# 将jar包添加到容器中并更名为zzyy_docker.jar
ADD docker-demo-1.0.jar /opt/docker-demo.jar
# # 运行jar包
ENTRYPOINT ["java","-jar","/opt/docker-demo.jar"]
# #暴露6001端口作为微服务
EXPOSE 6001
3. 上传jar包
sh
[root@hadoop102 ~]# ll
总用量 17408
-rw-------. 1 root root 1635 11月 7 18:07 anaconda-ks.cfg
-rw-r--r--. 1 root root 17814463 3月 27 2025 docker-demo-1.0.jar
-rw-r--r--. 1 root root 625 3月 27 09:15 Dockerfile
4. 构建镜像
sh
[root@hadoop102 ~]# docker build -t docker-demo:1.0 .
[+] Building 0.1s (8/8) FINISHED docker:default
=> [internal] load build definition from Dockerfile 0.0s
=> => transferring dockerfile: 724B 0.0s
=> [internal] load metadata for docker.io/library/jdk:8u212 0.0s
=> [internal] load .dockerignore 0.0s
=> => transferring context: 2B 0.0s
=> [1/3] FROM docker.io/library/jdk:8u212 0.0s
=> [internal] load build context 0.0s
=> => transferring context: 103B 0.0s
=> CACHED [2/3] WORKDIR /opt 0.0s
=> CACHED [3/3] ADD docker-demo-1.0.jar /opt/docker-demo.jar 0.0s
=> exporting to image 0.0s
=> => exporting layers 0.0s
=> => writing image sha256:077b2249a0693691a31f2936ef61e5ab13cb39ac80fdcd011f4630ca902b01a1 0.0s
=> => naming to docker.io/library/docker-demo:1.0
[root@hadoop102 ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
docker-demo 1.0 077b2249a069 14 minutes ago 123MB
tomcat 9.0.97 6dbc2b16532f 4 months ago 469MB
mysql 8.4.3 ed66f13824d5 5 months ago 592MB
5. 运行容器
sh
[root@hadoop102 ~]# docker run -d -p 6001:6001 077b2249a069
访问测试: