注意⚠️:若觉得Harbor部署麻烦,可以将BladeX-Tool与BladeX的源码拷贝至服务器,先在BladeX-Tool根目录执行 mvn clean install,再到BladeX根目录执行 mvn clean install,若均没问题,则再在BladeX根目录执行 mvn clean package dockerfile:build 便可以把docker镜像安装至本机,无需再用Harbor,可直接跳至下一小节查看。
* Harbor创建一个新的项目,命名为:blade
。

* Harbor再新建一个对应的blade
账号,分配好角色用于接受推送过来的镜像。

1. 使用harbor作为私有库,需要配置maven,找到setting.xml( linux可以使用find / -name settings.xml
)加入以下配置
<servers>
<server>
<id>192.168.0.157</id>
<username>admin</username>
<password>Harbor12345</password>
<configuration>
<email>smallchill@163.com</email>
</configuration>
</server>
</servers>
<pluginGroups>
<pluginGroup>com.spotify</pluginGroup>
</pluginGroups>
2. docker开启远程访问
如果没有远程访问,会报 Connect to 192.168.0.157:2375 [/192.168.0.157] failed: Connection refused: connect
在/usr/lib/systemd/system/docker.service
,配置远程访问。主要是在[Service]这个部分,**在harbor服务器**,加上下面两个参数:
[root@localhost harbor]# vi /lib/systemd/system/docker.service
ExecStart=
ExecStart=/usr/bin/dockerd -H tcp://0.0.0.0:2375 -H unix://var/run/docker.sock
⚠️ 注意:请务必确认2375端口没有开放到公网,否则将会带来安全隐患
3. 配置http访问
* 因为docker1.3.2版本开始默认docker registry使用的是https,我们设置Harbor默认http方式,所以当执行用docker login、pull、push等命令操作非https的docker regsitry的时就会报错。
解决办法:在服务器与开发机配置/etc/docker/daemon.json
[root@localhost harbor]# vi /etc/docker/daemon.json
{
"registry-mirrors": ["https://3dse7md.mirror.aliyuncs.com"]
}
将其修改为:
{
"registry-mirrors": ["https://3dse7md.mirror.aliyuncs.com"],
"insecure-registries":["192.168.0.157"]
}
4. 在每个需要构建子项目的pom.xml下加入配置,内容可参考如下
<build>
<plugins>
<plugin>
<groupId>com.spotify</groupId>
<artifactId>dockerfile-maven-plugin</artifactId>
<configuration>
<username>${docker.username}</username>
<password>${docker.password}</password>
<repository>${docker.registry.url}/${docker.namespace}/${project.artifactId}</repository>
<tag>${project.version}</tag>
<useMavenSettingsForAuth>true</useMavenSettingsForAuth>
<buildArgs>
<JAR_FILE>target/${project.build.finalName}.jar</JAR_FILE>
</buildArgs>
<skip>false</skip>
</configuration>
</plugin>
</plugins>
</build>
5. 在每个需要构建子项目的根目录下加入Dockerfile,内容可参考如下
FROM adoptopenjdk/openjdk8-openj9:alpine-slim
MAINTAINER smallchill@163.com
RUN mkdir -p /blade/gateway
WORKDIR /blade/gateway
EXPOSE 80
ADD ./target/blade-gateway.jar ./app.jar
ENTRYPOINT ["java", "-Djava.security.egd=file:/dev/./urandom", "-jar", "app.jar"]
CMD ["--spring.profiles.active=test"]
6. 在工程根目录的/script/docker/app/docker-compose.yml下加入配置,后续作为服务器启动脚本,内容可参考如下
blade-gateway:
image: "${REGISTER}/blade-gateway:${TAG}"
ports:
- 80:80
networks:
blade_net:
ipv4_address: 172.30.0.81
mvn clean package dockerfile:build dockerfile:push
等待推送完毕api
是针对gateway的反代配置,web
是针对前端的配置api
文件夹下的nginx.conf
,画出重点blade-auth
也有代理,是因为授权码模式需要直接访问auth服务,所以会单独代理出一个地址。若不需要,可以删除不用。web
文件夹下的nginx.conf
,同样画出重点/api
,这是框架内置规则,不能更改/usr/share/nginx/html
内,并由nginx指定,通过部署脚本,会将对应文件拷贝至指定路径.env
文件也一起拷贝,有时候ftp、eclipse等软件会不显示 )deploy.sh
赋予执行权限 chmod 744 deploy.sh
docker ps
查看目前启动的docker服务cd /docker/script
进入目录后依次执行:./deploy.sh port
开启端口./deploy.sh mount
放置挂载文件./deploy.sh base
启动基础模块(这时需要打开nacos进行配置文件的配置)./deploy.sh modules
启动业务模块docker ps
查看已启动的docker服务,发现服务都已启动成功6.3.6章节
再稳固一下部署细节,不要有遗漏哦Kubernetes
(简称K8S),来管理docker集群。大家需要不断学习与实战操练,才能在开发与部署的时候得心应手。6.3 章节
,入门后如何对接BladeX请看 6.3.6 章节