本文已参与「新人创作礼」活动,一起开启掘金创作之路
1、创建
创建SpringBoot项目,在build plugins标签下引入依赖
<build>
<plugins>
<!--docker-->
<!--docker:run是不在后台运行的,注意使用start-->
<!--完成的命令如下-->
<!--mvn clean package docker:stop docker:remove docker:build -DskipTests docker:start-->
<!--mvn clean package docker:build -DskipTests docker:push-->
<plugin>
<groupId>io.fabric8</groupId>
<artifactId>docker-maven-plugin</artifactId>
<version>0.35.0</version>
<configuration>
<!--<dockerHost>DOCKER地址</dockerHost>-->
<!--推送镜像地址,这块是我自己的阿里云镜像地址-->
<registry>registry.cn-qingdao.aliyuncs.com/amoqi-study</registry>
<!--可以把这块密码放到maven setting配置文件里-->
<!-- <authConfig>
<push>
<username></username>
<password></password>
</push>
</authConfig>-->
<images>
<image>
<name>${project.name}</name>
<alias>${project.name}</alias>
<build>
<dockerFileDir>${project.basedir}/src/main/docker/</dockerFileDir>
<assembly>
<descriptorRef>artifact</descriptorRef>
</assembly>
<tags>
<tag>1.0.0</tag>
</tags>
</build>
<run>
<!--数据卷,挂在文件的地址,例如输出项目日志-->
<!--<volumes>
<bind>
<volume>/root/sms:/sms</volume>
</bind>
</volumes>-->
<namingStrategy>alias</namingStrategy>
<!--端口映射-->
<ports>
<port>0.0.0.0:8089:8080</port>
</ports>
<restartPolicy>
<name>always</name>
</restartPolicy>
</run>
</image>
</images>
</configuration>
</plugin>
</plugins>
</build>
2、标签说明
<dockerHost>:代表的是安装docker的地址
<registry>:推送镜像的地址
authConfig push:镜像地址的用户名密码。可以配置到使用maven的conf/setting.xml文件中,如下
<servers>
<server>
<id>registry.cn-qingdao.aliyuncs.com/amoqi-study/</id>
<username>*</username>
<password>*</password>
</server>
</servers>
volumes:数据卷,挂在文件的地址,例如输出项目日志
ports: 映射端口号地址
3、配置文件
创建Dockerfile文件,创建src/main/docker/Dockerfile文件,内容如下:
FROM openjdk:8-jdk-alpine
VOLUME /tmp
# ADD maven/springboot-docker-0.0.1-SNAPSHOT.jar app.jar
ADD maven/*.jar app.jar
RUN sh -c 'touch /app.jar'
ENV TZ=Asia/Shanghai
RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone
ENV JAVA_OPTS=""
ENTRYPOINT [ "sh", "-c", "java $JAVA_OPTS -Djava.security.egd=file:/dev/./urandom -jar /app.jar" ]
4、命令使用
执行推送
mvn clean package docker:build -DskipTests docker:push
可执行命令运行,会直接运行到容器里
mvn clean package docker:stop docker:remove docker:build -DskipTests docker:start
5、使用推送的镜像
5.1、编写docker-compose.yml文件,注意image是我自己的阿里镜像地址库,可以登录阿里云选择产品容器镜像服务来获取
version: '3.5' # docker-compose的版本号
services:
# docker-compose 服务名
docker-test:
# 阿里云镜像地址
image: registry.cn-qingdao.aliyuncs.com/amoqi-study/springboot-docker:latest
# 容器名称
container_name: docker-test
ports:
# 端口映射
- 8080:8080
networks:
test:
aliases:
# 在网络中的名称,如果有多个容器使用 test 网络,可以使用 docker-test 进行访问
- docker-test
networks:
test:
# 创建test网络
name: test
driver: bridge