docker部署springboot项目
创建springboot项目
注意pom中配置docker编译的插件
<?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 https://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.4.1</version> <relativePath/> <!-- lookup parent from repository --> </parent> <groupId>com.jerry</groupId> <artifactId>springboot-docker</artifactId> <version>0.0.1-SNAPSHOT</version> <name>springboot-docker</name> <description>Demo project for Spring Boot</description> <properties> <java.version>1.8</java.version> <docker.image.prefix>jerry</docker.image.prefix> </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-test</artifactId> <scope>test</scope> </dependency> </dependencies> <build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> <plugin> <groupId>com.spotify</groupId> <artifactId>dockerfile-maven-plugin</artifactId> <version>1.4.13</version> <executions> <execution> <id>default</id> <goals> <goal>build</goal> <goal>push</goal> </goals> </execution> </executions> <configuration> <dockerfile>${project.basedir}</dockerfile> <repository>${docker.image.prefix}/${project.artifactId}</repository> <tag>${project.version}</tag> <buildArgs> <JAR_FILE>target/${project.build.finalName}.jar</JAR_FILE> </buildArgs> </configuration> </plugin> </plugins> </build> </project>
在项目目录下创建Dockerfile文件:
FROM java:8 MAINTAINER jerry <316308402@qq.com> VOLUME ["/tmp"] EXPOSE 8085 ARG JAR_FILE COPY ${JAR_FILE} app.jar ENTRYPOINT ["java", "-Djava.security.egd=file:/dev/./urandom", "-jar", "/app.jar"]
因为docker-maven-plugin默认的是连接本机的docker,我们是要推送到远程机器,所以配置远程机器(Docker服务)的环境变量 DOCKER_HOST=tcp://47.98.244.146:2375
要开通远程机器docker的2375端口
方法1:
# 编辑docker.service文件 vim /usr/lib/systemd/system/docker.service # 修改 ExecStart=最前增加/usr/bin/dockerd -H tcp://0.0.0.0:2375 -H unix://var/run/docker.sock # ExecStart=/usr/bin/dockerd -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 [root@iZbp1epntmn4jua47mcmn7Z system]# systemctl daemon-reload [root@iZbp1epntmn4jua47mcmn7Z system]# systemctl restart docker [root@iZbp1epntmn4jua47mcmn7Z system]# netstat -tulp Active Internet connections (only servers) Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name tcp 0 0 0.0.0.0:distinct 0.0.0.0:* LISTEN 2485/java tcp 0 0 0.0.0.0:webcache 0.0.0.0:* LISTEN 2485/java tcp 0 0 0.0.0.0:tproxy 0.0.0.0:* LISTEN 27008/java tcp 0 0 0.0.0.0:ssh 0.0.0.0:* LISTEN 1036/sshd tcp 0 0 0.0.0.0:ddi-tcp-1 0.0.0.0:* LISTEN 1256/java tcp6 0 0 [::]:2375 [::]:* LISTEN 5202/dockerd-curren # 注意这一行 说明打开来了2375端口 udp 0 0 iZbp1epntmn4jua47mc:ntp 0.0.0.0:* 1040/ntpd udp 0 0 iZbp1epntmn4jua47mc:ntp 0.0.0.0:* 1040/ntpd udp 0 0 iZbp1epntmn4jua47mc:ntp 0.0.0.0:* 1040/ntpd udp 0 0 iZbp1epntmn4jua47mc:ntp 0.0.0.0:* 1040/ntpd udp 0 0 iZbp1epntmn4jua47mc:ntp 0.0.0.0:* 1040/ntpd udp 0 0 iZbp1epntmn4jua47mc:ntp 0.0.0.0:* 1040/ntpd udp 0 0 localhost:ntp 0.0.0.0:* 1040/ntpd udp 0 0 0.0.0.0:ntp 0.0.0.0:* 1040/ntpd udp6 0 0 [::]:ntp [::]:* 1040/ntpd
方法2:
还未测试
编译打包springboot项目
在idea的终端输入: mvn clean package dockerfile:build 打包并且构建镜像 遇到一个问题:就是修改了DOCKER_HOST环境变量,但是在idea中不起作用,需要使用set DOCKER_HOST=new value,设置新的变量值
# 进入到远程机器 查看镜像是否创建 [root@kubernetes-01 system]# docker images REPOSITORY TAG IMAGE ID CREATED SIZE jerry/springboot-docker 0.0.1-SNAPSHOT 7ef8553329da 20 minutes ago 660 MB docker.io/elasticsearch 7.6.2 f29a1ee41030 9 months ago 791 MB docker.io/java 8 d23bdf5b1b1b 3 years ago 643 MB [root@kubernetes-01 system]# # 创建容器 [root@kubernetes-01 system]# docker run -d --name springboot-docker01 -p 8085:8085 jerry/springboot-docker:0.0.1-SNAPSHOT
验证
在本机的浏览器中访问:
http://192.168.132.103:8085/demo/test/index 测试页