docker
pom.xml 配置maven插件
需注意:配置文件中省略了和主题无关的内容
<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>
<groupId>com.itdragons</groupId>
<artifactId>xxx</artifactId>
<version>1.0.0</version>
<packaging>pom</packaging>
<name>xxx</name>
<properties>
<docker.plugin.version>0.32.0</docker.plugin.version>
<!-- 本机地址,也可指定rest Api地址-->
<docker.host>unix:/var/run/docker.sock</docker.host>
<!-- 阿里云仓库 -->
<docker.registry>registry.cn-zhangjiakou.aliyuncs.com</docker.registry>
<docker.namespace>itdragons</docker.namespace>
<docker.username>hi****@aliyun.com</docker.username>
<docker.password>***********</docker.password>
</properties>
<dependencies>
……
</dependencies>
<build>
<finalName>${project.name}</finalName>
<resources>
<resource>
<directory>src/main/resources</directory>
<filtering>false</filtering>
</resource>
</resources>
<pluginManagement>
<plugins>
<plugin>
<groupId>io.fabric8</groupId>
<artifactId>docker-maven-plugin</artifactId>
<version>${docker.plugin.version}</version>
<configuration>
<!-- Docker Remote Api-->
<dockerHost>${docker.host}</dockerHost>
<!-- Docker 镜像私服-->
<registry>${docker.registry}</registry>
<!-- 认证信息-->
<authConfig>
<push>
<username>${docker.username}</username>
<password>${docker.password}</password>
</push>
</authConfig>
<images>
<image>
<!-- 镜像名称:命名空间/仓库名称:镜像版本号-->
<name>${docker.registry}/${docker.namespace}/${project.artifactId}:${project.version}
</name>
<!--别名:用于容器命名和在docker-compose.yml文件只能找到对应名字的配置-->
<alias>${project.artifactId}</alias>
<build>
<dockerFile>${project.basedir}/Dockerfile</dockerFile>
</build>
</image>
</images>
</configuration>
</plugin>
</plugins>
</pluginManagement>
</build>
</project>
DockerFile
FROM java:8
MAINTAINER 7121867@qq.com
ARG JAR_FILE=./target/xxx-admin.jar
# JVM调优参数
ENV VmOptions ""
# 额外参数
ENV PARAMS ""
ENV TZ=PRC
RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone
WORKDIR /tmp
EXPOSE 8080
ADD ${JAR_FILE} ./app.jar
# 在docker-copmpose中定义ENTRYPOINT,可覆盖CMD
CMD java -server $VmOptions -jar app.jar -Djava.security.egd=file:/dev/./urandom $PARAMS
镜像打包和推送
镜像打包:mvn docker:build
镜像推送:mvn docker:push
docker-compose.yml
version: "3"
services:
xxx-admin:
image: registry.cn-zhangjiakou.aliyuncs.com/itdragons/xxx-admin:1.0.0
container_name: xxx-admin
ports:
- 18080:8080
environment:
- TZ=Asia/Shanghai
- SPRING_PROFILES_ACTIVE=dev
- VmOptions=-Xms512m -Xmx1024m
volumes:
- ./logs:/logs
服务启动
docker-compose up -d