折腾了一天,总算成功了,记录一下。中间参考了很多人的博文,总是有这样或那样的问题,可能是大家的环境不一样,没说清楚。把我机子上成功的步骤和环境都记录一下,有图有真相。
环境说明
本机:Window10、IDEA 2021、SpringBoot 2.3.12.RELEASE
服务器:CentOS 7.8;Docker 20.10.10;Harbor 2.3.4
Docker安装
1、设置稳定的安装源(存储库)
yum install yum-utils -y
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
2、导入证书
rpm --import http://mirror.centos.org/centos/RPM-GPG-KEY-CentOS-7
3、安装
yum list docker-ce --showduplicates | sort -r
yum install -y docker-ce-20.10.10 docker-ce-cli-20.10.10 containerd.io
4、启动
systemctl start docker
systemctl enable docker
5、验证
Docker version
Docker run hello-world
安装Harbor
安装 docker-compose
curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
chmod +x /usr/local/bin/docker-compose
docker-compose –version
下载
tar vxzf ***
cp harbor /usr/local/src/
修改配置
cd /usr/local/src/harbor
cp harbor.yml.tmpl harbor.yml
vi harbor.yml
修改 hostname为本机ip
修改端口号,我用的是6000
注释掉https
修改harbor_admin_password
修改data_volumn
安装
./install.sh
启动
cd /usr/local/src/harbor
docker-compose up –d
开机自启动
vi /usr/lib/systemd/system/harbor.service
[Unit] Description=Harbor After=docker.service systemd-networkd.service systemd-resolved.service Requires=docker.service Documentation=http://github.com/vmware/harbor [Service] Type=simple Restart=on-failure RestartSec=5 ExecStart=/usr/local/bin/docker-compose -f /usr/local/src/harbor/docker-compose.yml up ExecStop=/usr/local/bin/docker-compose -f /usr/local/src/harbor/docker-compose.yml down [Install] WantedBy=multi-user.target
chmod +x harbor.service
systemctl enable harbor systemctl start harbor #systemctl stop harbor
配置docker:
vi /usr/lib/systemd/system/docker.service
ExecStart=/usr/bin/dockerd -H tcp://0.0.0.0:2375 -H unix://var/run/docker.sock --insecure-registry=http://192.188.1.246:6000
systemctl daemon-reload
systemctl restart docker
Web界面访问
http://192.188.1.246:6000
下载java8镜像
在服务器上把java 8的镜像下载下来,这是后面打包的基础镜像。
docker pull java:8
Windows下配置
Windows下不用安装docker,直接用服务器上的2375端口的。
环境变量
设置环境变量:DOCKER_HOST : tcp://ip:2375
重启Windows,使环境变量的修改生效。
windows下的Maven设置
/conf/settings.xml文件 servers中加入
<server>
<id>192.188.1.246:6000</id>
<username>admin</username>
<password>Harbor12345</password>
</server>
代码
pom
<build>
<pluginManagement>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<version>2.3.12.RELEASE</version>
</plugin>
</plugins>
</pluginManagement>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<executions>
<execution>
<goals>
<goal>repackage</goal>
</goals>
</execution>
</executions>
</plugin>
<plugin>
<groupId>com.spotify</groupId>
<artifactId>dockerfile-maven-plugin</artifactId>
<version>1.4.13</version>
<executions>
<execution>
<id>default</id>
<goals>
<!--如果package时不想用docker打包,就注释掉这个goal-->
<goal>build</goal>
<goal>push</goal>
</goals>
</execution>
</executions>
<configuration>
<!-- 上下文路径配置,此处设置为项目根路径 用来读取Dockerfile-->
<contextDirectory>${project.basedir}</contextDirectory>
<!--使用Maven的setting.xml来配置账号密码-->
<useMavenSettingsForAuth>true</useMavenSettingsForAuth>
<!--上传路径/镜像构建名: Harbor地址/Harbor项目名/springboot项目名-->
<repository>192.188.1.246:6000/library/${project.artifactId}</repository>
<!-- 标签,最终会显示在Harbor镜像的标签中 -->
<tag>${project.version}</tag>
<!-- 作为Dockerfile 文件传入,也就是Dockerfile 中 ARG JAR_FILE的值-->
<buildArgs>
<JAR_FILE>${project.build.finalName}.jar</JAR_FILE>
</buildArgs>
</configuration>
</plugin>
</plugins>
</build>
Dockerfile放在程序根目录下,跟src、target同一级
# 添加 Java 8 镜像来源
FROM java:8
# 添加参数
ARG JAR_FILE
# 添加 Spring Boot 包
ADD target/${JAR_FILE} app.jar
# 执行启动命令
ENTRYPOINT ["java","-jar","/app.jar"]
然后就可以打包、上传
上传成功
源代码地址
最后,源代码公布出来,删除了业务代码,保留了pom等打包设置。