<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<java.version>1.8</java.version>
<maven.test.skip>true</maven.test.skip>
<spring-cloud.version>Finchley.RELEASE</spring-cloud.version>
<dockerfile.maven.version>1.4.3</dockerfile.maven.version>
<docker.image.prefix>registry.docker.com:5000</docker.image.prefix>
<appPort>8880</appPort>
</properties>
<finalName>${project.name}</finalName>
<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>
<repository>${docker.image.prefix}/${project.build.finalName}</repository>
<tag>${project.version}</tag>
<buildArgs>
<JAR_FILE>${project.build.finalName}.jar</JAR_FILE>
<APP_PORT>${appPort}</APP_PORT>
</buildArgs>
</configuration>
</plugin>
- springboot application.yml配置
server:
port: @appPort@
logging:
level:
root: info
spring:
application:
name: @project.name@
- Dockerfile文件配置 > tip: 放到项目根目录下
FROM hub.c.163.com/dwyane/openjdk:8
VOLUME /tmp
WORKDIR /workdir
ARG JAR_FILE
ARG APP_PORT
ADD target/${JAR_FILE} app.jar
ENTRYPOINT ["java","-jar","app.jar"]
EXPOSE ${APP_PORT}
- 执行mvn clean package > 访问私有仓库看构建情况: http://registry.docker.com:5000/v2/_catalog
- Jenkins配置
- 创建maven项目
- Build[Goals and options -> clean install -Dmaven.test.skip=true]
- Post Steps[Run only if build succeeds]
- add post-build step[Send files or execute commands over SSH]
cd $DOCKER_WORKSPACE/$JOB_NAME
export app_version='1.0'
tee $JOB_NAME.yml <<-'EOF'
version: '3.5'
services:
$JOB_NAME:
image: registry.docker.com:5000/$JOB_NAME:${app_version}
ports:
- target: 8880
published: 8880
mode: host
networks:
- middleware
deploy:
replicas: 1
update_config:
parallelism: 1
restart_policy:
condition: on-failure
networks:
middleware:
external: true
EOF
docker stack up -c $JOB_NAME.yml app
- 编辑/etc/sysconfig/docker文件,我安装的docker ce,没有发现这个文件,如果有,则:
sudo vi /etc/sysconfig/docker
//添加下面这行
other_args="-H tcp://0.0.0.0:2375 -H unix:///var/run/docker.sock"
//保存
:wq!
//重启docker服务
service docker restart
- 在windows系统环境变量中新建DOCKER_HOST值为tcp://[docker_ip]:2375,将这里的[docker_ip],替换为docker所在的centos服务器IP或主机名(用主机名,需要windows配置hosts),可能需要重启系统。
- 修改/usr/lib/systemd/system/docker.service文件
sudo vi /usr/lib/systemd/system/docker.service
//在ExecStart这一行后面加上(这里就写4个0,别改成自己的ip)
-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
:wq!
保存退出
重新加载配置文件 systemctl daemon-reload
重启docker :service docker restart
这样才可以是/etc/default/docker中的配置项生效
- 我们首先查询docker所在虚拟机在监听哪些端口,使用命令:
netstat -tlunp
sudo iptables-save
sudo firewall-cmd --zone=public --add-port=2375/tcp --permanent
sudo firewall-cmd --reload