海露的个人博客

海露的个人博客


  • 首页

  • 分类

  • 归档

  • Search

maven打包到docker后push到harbor

Posted on 2020-07-09 | In 环境部署

公司项目需要,开始玩docker,开始折腾harbor,各种百度各种问题,满满的搞了一整天,终于搞定了maven打包到docker,然后push到harbor,现记录一下自己研究的成果。现在环境为远程私有仓库在阿里云,本地安装docker DeskTop,流利是先打包到本地docekr容器再推送到harbor。

Ubuntu 安装 Docker

1
apt-get remove docker docker-engine docker.io containerd runc
1
apt install docker.io

阿里云加速器(推荐)

点击链接获取

Docker Compose 安装

Compose 支持 Linux、macOS、Windows 10 三大平台。在 Linux 上的也安装十分简单,从 官方 GitHub Release 处直接下载编译好的二进制文件即可。

1
2
curl -L https://github.com/docker/compose/releases/download/1.24.0/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose
chmod +x /usr/local/bin/docker-compose

验证

1
2
3
4
5
6
7
docker-compose version

# 输出如下
docker-compose version 1.24.0, build 0aa59064
docker-py version: 3.7.2
CPython version: 3.6.8
OpenSSL version: OpenSSL 1.1.0j 20 Nov 2018

安装harbor

1
2
3
4
# 下载
wget https://github.com/goharbor/harbor/releases/download/v1.10.1/harbor-offline-installer-v1.10.1.tgz
# 解压
tar -xvf harbor-offline-installer-v1.10.1.tgz

配置

打开文件 harbor.yml

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
# 修改hostname,也可使用ip:132.232.22.xxx
hostname: harbor.example.com

# 修改端口号,默认为80,可以默认
http:
# port for http, default is 80. If https enabled, this port will redirect to https port
port: 80

# 使用https修改,不需要则注释即可
#https:
# https port for harbor, default is 443
#port: 443
# The path of cert and key files for nginx
#certificate: /your/certificate/path
#private_key: /your/private/key/path

# 修改admin的密码
harbor_admin_password: Harbor12345

注意:修改三个地方:1,hostname为harbor的仓库IP.。2,注释掉https开头的这一堆,因为我打算用账户密码访问。3,修改harbor_admin_password

安装

1
2
3
4
# 检查
./prepare
# 安装
./install

使用

登录浏览器(因为我用的是http访问,所以用火狐,如果用谷歌,可能会登录不上),使用上面配置的域名或者ip+port,进入harbor内创建一个项目test

安装Docker DeskTop

打开客户端,修改docker Engine

{
“registry-mirrors”: [],
“insecure-registries”: [“47.91.220.3111”],
“debug”: true,
“experimental”: true
}

其中:insecure-registries为harbor的地址,开启http请求,experimental为true,能从公网下载镜像。

勾选如下

测试登录

在cmd中输入

docker login 47.91.220.3111 输入用户名和密码(harbor的用户名和密码)

maven配置

<server>
   <!--maven的pom中可以根据这个id找到这个server节点的配置-->  
   <id>docker-harbor-registry</id>
   <!--远程harbor的用户名-->  
   <username>admin</username>
   <!--远程harbor的密码-->  
   <password>Harbor12345</password>
 </server>
1
2
3
4
5
6
<!--项目名,需要和Harbor中的项目名称保持一致 -->
<docker.image.prefix>mypro</docker.image.prefix>
<!-- docker私服地址,Harbor配置完默认地址就是服务器IP地址,默认不带端口号 -->
<docker.registry>47.91.220.3111</docker.registry>
<!--项目名,需要和Harbor中的项目名称保持一致 -->
<docker.registry.name>test</docker.registry.name>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
<build>
<finalName>app</finalName>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
<!-- Docker maven plugin -->
<plugin>
<groupId>com.spotify</groupId>
<artifactId>docker-maven-plugin</artifactId>
<version>1.2.2</version>
<configuration>
<serverId>docker-harbor-registry</serverId>
<registryUrl>http://${docker.registry}</registryUrl>
<!--必须配置dockerHost标签(除非配置系统环境变量DOCKER_HOST)-->
<dockerHost>http://localhost:2375</dockerHost>
<!--Building image 47.91.220.3111 /demo1-->
<imageName>${docker.registry}/${docker.registry.name}/${project.build.finalName}:${project.version}</imageName>

<dockerDirectory>src/main/docker</dockerDirectory>
<resources>
<resource>
<targetPath>/</targetPath>
<directory>${project.build.directory}</directory>
<include>${project.build.finalName}.jar</include>
</resource>
</resources>
</configuration>
</plugin>
<!-- Docker maven plugin -->
</plugins>
</build>

Dockerfile内容(src/main/docker下)

1
2
3
4
FROM openjdk:8-jdk-alpine
VOLUME /tmp
ADD *.jar app.jar
ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","app.jar"]

部署在其它服务器

docker开启http

如果不开启docker login时默认是https

1
2
3
4
5
6
7
vim /etc/docker/daemon.json

"insecure-registries": ["47.91.220.3111"]

systemctl daemon-reload

systemctl restart docker

记录几个常用:

docker pull 47.91.220.3111/test/app:0.0.1

docker run -p 8989:8989 -name app -d 47.91.220.3111/test/app:0.0.1

docker logs -f -t –since=”2017-05-31” –tail=10 edu_web_1

–since : 此参数指定了输出日志开始日期,即只输出指定日期之后的日志。

-f : 查看实时日志

-t : 查看日志产生的日期

-tail=10 : 查看最后的10条日志。

edu_web_1 : 容器名称

docker-compose部署禅道研发项目管理平台

Posted on 2020-06-03 | In 环境部署

镜像准备

mkdir zentao

编写docker-compose.yml文件

cd zentao

vim docker-compose.yml

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
version: "3"

services:
zentao:
image: idoop/zentao:latest
container_name: ZentaoApplication
restart: always
environment:
ADMINER_USER: "admin"
ADMINER_PASSWD: "admin123"
BIND_ADDRESS: "false"
ports:
- 8091:80
volumes:
- ./etc/localtime:/etc/localtime:ro
- ./etc/timezone:/etc/timezone
- ./data/zbox/:/opt/zbox/

ADMINER_USER :设置 Web 登录数据库管理员帐户

ADMINER_PASSWD :设置 Web 登录数据库的管理员密码

BIND_ADDRESS:如果使用设置值 false,MySQL 服务器将不绑定地址

SMTP_HOST:设置smtp服务器的 IP 和主机。(如果无法发送邮件,将会有所帮助。)也可以 extra_host 在 docker-compose.yml 中使用,或在使用 docker run 命令时使用 –add-host

禅道管理员帐户为 admin,默认初始化密码为 123456。MySQL 的 root 帐户密码为 123456,在首次登录时更改密码。

启动服务

docker-compose up -d

MySQL递归查询存储函数

Posted on 2020-05-06 | In 代码案例
向下查询(根据父级查询子级)
1
select * from tb_base_region WHERE FIND_IN_SET(region_code,getRegionCodeListForDown('01'));
向上查询(根据子级查询父级)
1
select * from tb_base_region WHERE FIND_IN_SET(region_code,getRegionCodeListForUp('010101'));
Read more »

shell在指定目录下批量执行sql脚本的实例

Posted on 2020-04-14 | In 环境部署
shell在指定目录下批量执行sql脚本的实例
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
#!/bin/bash
#execute all script in specified directory
MYDATE=`date +%F'-'%T'-'%w`
MYSQL_PATH=/tmp/scripts #指定的目录
LOG_FILE=/tmp/scripts/exec_${MYDATE}.log
confirm=
db_name=
db_pass=
for file in ${MYSQL_PATH}/*
do
if [ -f "$file" ] ; then
postfix=`echo $file | awk -F'.' '{print "."$NF}'`
if [ $postfix = ".sql" ] ; then
if [ ! $db_name ] ; then #如果没有指定数据库
read -p "请输入数据库名:" db_name
read -p "你输入的数据名是【$db_name】,确认继续请输入--yes--: " confirm
fi
if [ "$confirm" = "yes" ] && [ -n $confirm ] ; then
if [ ! $db_pass ] ; then #如果没有设置密码
stty -echo #密码输入保护关闭显示
read -p "请输入数据库密码:" db_pass
echo -e "\n"
stty echo
fi
mysql -uroot -p$db_pass -P3306 --default-character-set=utf8 ${db_name} < $file >& error.log
echo $file
echo -e "\n===========$file=============\n" >>${LOG_FILE}
cat error.log >>${LOG_FILE} #输出执行日志
error=`grep ERROR error.log` #读取错误日志信息
if [ -n "$error" ] ; then #如果有错误就退出程序
echo $error
exit
fi
else
echo "您已经取消操作!"
exit
fi
fi
fi
done
问题

今天遇到这个问题: -bash: ./yihai.sh: /bin/bash^M: bad interpreter: No such file or directory,找到问题是因为用notepad++编写的脚本,需要转换一下,在命令行输入

1
sed -i "s/\r//" cleanup.sh

再次执行./yihai.sh,就可以了

java如何获取mac物理地址

Posted on 2020-02-03 | In 代码案例

java如何获取mac物理地址,原地址,非原创

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
package com.example.demo.config;


import java.net.InetAddress;
import java.net.InterfaceAddress;
import java.net.NetworkInterface;
import java.util.ArrayList;
import java.util.List;
import java.util.stream.Collectors;

public class MacTools {
/***因为一台机器不一定只有一个网卡呀,所以返回的是数组是很合理的***/
public static List<String> getMacList() throws Exception {
java.util.Enumeration<NetworkInterface> en = NetworkInterface.getNetworkInterfaces();
StringBuilder sb = new StringBuilder();
ArrayList<String> tmpMacList = new ArrayList<>();
while (en.hasMoreElements()) {
NetworkInterface iface = en.nextElement();
List<InterfaceAddress> addrs = iface.getInterfaceAddresses();
for (InterfaceAddress addr : addrs) {
InetAddress ip = addr.getAddress();
NetworkInterface network = NetworkInterface.getByInetAddress(ip);
if (network == null) {
continue;
}
byte[] mac = network.getHardwareAddress();
if (mac == null) {
continue;
}
sb.delete(0, sb.length());
for (int i = 0; i < mac.length; i++) {
sb.append(String.format("%02X%s", mac[i], (i < mac.length - 1) ? "-" : ""));
}
tmpMacList.add(sb.toString());
}
}
if (tmpMacList.size() <= 0) {
return tmpMacList;
}
/***去重,别忘了同一个网卡的ipv4,ipv6得到的mac都是一样的,肯定有重复,下面这段代码是。。流式处理***/
List<String> unique = tmpMacList.stream().distinct().collect(Collectors.toList());
return unique;
}

public static void main(String[] args) throws Exception {
System.out.println("进行 multi net address 测试===》");
List<String> macs = getMacList();
System.out.println("本机的mac网卡的地址有:" + macs);

}
}



linux文件定时备份和数据库定时备份

Posted on 2019-12-26 | In 环境部署
图片文件复制

说明:每日凌晨1点0分定时将文件从<从数据库服务器>复制到<主数据库服务器>,只复制新增的文件。
在<主数据库服务器>上面运行如下命令

Read more »

linux下安装mysql

Posted on 2019-12-24 | In 环境部署

下面记录了我在Linux环境下安装Mysql的完整过程,如有错误或遗漏,欢迎指正。

安装前准备

检查是否已经安装过mysql,执行命令

Read more »

答应我,别再if/else走天下了可以吗

Posted on 2019-12-23 | In 开发总结

以下文章来源于CodeSheep ,作者hansonwong99

哎,曾几何时

想当年,其实我也特别钟情于 if/else连环写法,上来就是一顿SAO操作,比如举个好理解的简单栗子:
一般来说我们正常的后台管理系统都有所谓的角色的概念,不同管理员权限不一样,能够行使的操作也不一样,比如:

Read more »

文件上传(二)仿京东样式,带前端压缩,带回调函数的上传功能

Posted on 2019-12-20 | In 代码案例

仿京东样式,带前端压缩,带回调函数的上传功能,直接可以运行的代码

Read more »

文件上传(一)XMLHttpRequest文件在前端页面压缩并上传

Posted on 2019-12-19 | In 代码案例

代码如下

Read more »
1234

35 posts
6 categories
18 tags
© 2021 John Doe
Powered by Hexo
|
Theme — NexT.Pisces v5.1.4