Docker中间件安装
Docker安装
uname -r
yum install -y yum-utils device-mapper-persistent-data lvm2
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
yum install docker-ce docker-ce-cli containerd.io -y
systemctl start docker
systemctl enable docker
docker version
docker images
docker 自启动
一、docker服务设置自动启动
systemctl list-units --type=service 查看已启动的服务
systemctl list-unit-files | grep enable 查看是否设置开机启动
systemctl enable docker.service 设置开机启动
systemctl disable docker.service 关闭开机启动
二、docker容器设置自动启动
启动时加--restart=always
Flag Description
no 不自动重启容器. (默认value)
on-failure 容器发生error而退出(容器退出状态不为0)重启容器
unless-stopped 在容器已经stop掉或Docker stoped/restarted的时候才重启容器
always 在容器已经stop掉或Docker stoped/restarted的时候才重启容器
docker run -tid --name isaler_v0.0.11 -p 8081:8080 --restart=always -v
设置容器自启
docker update --restart=always 容器名称
Docker安装mysql
docker pull mysql:8.4.3
docker images
mkdir -p /opt/soft/mysql/data
mkdir -p /opt/soft/mysql/conf/my.cnf
touch my.cnf
将以下内容粘入
[mysqld]
user=mysql
character-set-server=utf8
default_authentication_plugin=mysql_native_password
default-time_zone = '+8:00'
[client]
default-character-set=utf8
[mysql]
default-character-set=utf8
docker run -p 3306:3306 \
--name mysql -v /opt/soft/mysql/logs:/logs \
-v /opt/soft/mysql/data:/mysql_data \
-e MYSQL_ROOT_PASSWORD=zzhkj123+ -d mysql:8.4.3
docker exec -it mysql bash
mysql -uroot -p
CREATE USER 'admin'@'%' IDENTIFIED BY '123456';
GRANT ALL ON *.* TO 'admin'@'%';
flush privileges;
docker ps 查看启动状态
navicat直接连接即可,云服务器需要开启防火墙
Maven配置国内源
注意:maven一定要放到Jenkins的数据挂载目录内,这样容器才能读到。参考开发工具选型里面的maaven包。
在我们的maven的conf的setting的mirrors里面进行配置,配置后,Jenkins下载包会非常的快,慢的小伙伴可以配置这个。
<mirror>
<id>alimaven</id>
<name>aliyun maven</name>
<url>http://maven.aliyun.com/nexus/content/groups/public/</url>
<mirrorOf>central</mirrorOf>
</mirror>
Docker安装Jenkins
docker search jenkins
docker pull jenkins/jenkins:lts
docker run -d -u root -p 8080:8080 -p 50000:50000 -v /var/jenkins_home:/var/jenkins_home -v /etc/localtime:/etc/localtime --name jenkins jenkins/jenkins:lts
docker start jenkins
这样就是启动成功了。然后通过8080端口进行访问。访问的过程会很慢等待一下。
完事之后,通过log来看一下密码

访问之后,输入上面的密码。
点击继续后,选择 按照推荐安装插件。然后继续等待。


上面输入任务名称,下面选择构建自由风格



注意:maven一定要放到Jenkins的数据挂载目录内,这样容器才能读到。参考开发工具选型里面的maaven包。


设置密码

cp /var/jenkins_home/workspace/jc-club-subject/jc-club-subject/jc-club-starter/target/jc-club-starter.jar /var/jenkins_home/jar/
#!/bin/bash
APP_NAME=jc-club-starter.jar
LOG_NAME=jc-club-starter.log
pid=`ps -ef | grep $APP_NAME | grep -v grep|awk '{print $2}'`
function is_exist(){
pid=`ps -ef | grep $APP_NAME | grep -v grep|awk '{print $2}'`
if [ -z ${pid} ]; then
String="notExist"
echo $String
else
String="exist"
echo $String
fi
}
str=$(is_exist)
if [ ${str} = "exist" ]; then
echo " 检测到已经启动的程序,pid 是 ${pid} "
kill -9 $pid
else
echo " 程序没有启动了 "
echo "${APP_NAME} is not running"
fi
str=$(is_exist)
if [ ${str} = "exist" ]; then
echo "${APP_NAME} 已经启动了. pid=${pid} ."
else
source /etc/profile
BUILD_ID=dontKillMe
nohup java -Xms300m -Xmx300m -jar /var/jenkins_home/jar/$APP_NAME >$LOG_NAME 2>&1 &
echo "程序已重新启动..."
fi
保存后,界面出现工程

点击右侧小箭头进行自动部署。
点击项目名称,可以进入详细界面。

点击16可查看项目构建的详细日志。

yum安装jdk
yum -y list java*

yum install -y java-1.8.0-openjdk.x86_64
查询java版本
java -version
Docker安装minio
docker search minio

docker pull minio/minio
docker run -p 9000:9000 -p 9090:9090 \
--name minio \
-d --restart=always \
-e "MINIO_ACCESS_KEY=minioadmin" \
-e "MINIO_SECRET_KEY=minioadmin" \
-v /mydata/minio/data:/data \
minio/minio server \
/data --console-address ":9090" -address ":9000"
Docker安装miniomc突破7天限制
docker pull minio/mc
docker run -it --entrypoint=/bin/sh minio/mc
mc config host add <ALIAS> <YOUR-S3-ENDPOINT> <YOUR-ACCESS-KEY> <YOUR-SECRET-KEY> [--api API-SIGNATURE]
mc config host add minio http://117.72.14.166:9000 GrVCPXySKgGoJiGgXmtv 0xlqSI9GXvnBOtp0GwUj5OshKNBk9JgwoexotbVV
mc ls minio
mc anonymous
mc anonymous set download minio/jichi
Docker查看运行容器启动命令
有时候,我们想查看已经启动的容器,当时执行的时候到底是什么命令,需要安装一个小工具 get_command_4_run_container
docker pull cucker/get_command_4_run_container
# 以nacos为例子
docker run --rm \
-v /var/run/docker.sock:/var/run/docker.sock cucker/get_command_4_run_container nacos
执行完后,我们就会看到如下的启动命令
docker run -d \
--name nacos \
--privileged \
--cgroupns host \
--env JVM_XMX=256m \
--env MODE=standalone \
--env JVM_XMS=256m \
-p 8848:8848/tcp \
-p 9848:9848/tcp \
--restart=always \
-w /home/nacos \
nacos/nacos-server
Docker安装nacos
docer search nacos
docer pull nacos/nacos-server
# 镜像拉完之后,启动脚本
docker run -d \
--name nacos \
--privileged \
--cgroupns host \
--env JVM_XMX=256m \
--env MODE=standalone \
--env JVM_XMS=256m \
-p 8848:8848/tcp \
-p 9848:9848/tcp \
--restart=always \
-w /home/nacos \
nacos/nacos-server
访问 ip 地址+8848 /nacos 即可进入控制台

nacos 的文档:https://nacos.io/zh-cn/docs/what-is-nacos.html
nacos 的架构原理:https://developer.aliyun.com/ebook/36?spm=a2c6h.20345107.ebook-index.18.152c2984fsi5ST
Docker安装Redis拉下镜像之后,点击下面地址选择自己需要的 redis 版本的配置文件,也可以直接使用鸡哥的。
提前在服务器建立 /data/redis 文件夹,touch 文件redis.conf,也可以上面的直接复制-p 6379:6379:把容器内的6379端口映射到宿主机6379端口 -v /data/redis/redis.conf:/etc/redis/redis.conf:把宿主机配置好的redis.conf放到容器内的这个位置中 -v /data/redis/data:/data:把redis持久化的数据在宿主机内显示,做数据备份redis-server /etc/redis/redis.conf:这个是关键配置,让redis不是无配置启动,而是按照这个redis.conf的配置启动 –appendonly yes:redis启动后数据持久化Docker查看运行容器启动命令有时候,我们想查看已经启动的容器,当时执行的时候到底是什么命令,需要安装一个小工具 get_command_4_run_container执行完后,我们就会看到如下的启动命令 1执行完后,我们就会看到如下的启动命令docker安装xxljob docker安装es 启动成功之后,访问http://117.72.14.166:9200/
看到这个就证明成功了!插件:es-headdocker安装RMQdocker 安装Maven仓库docker 安装 Ftpdocker安装pg可以先下载 注意此脚本路径 应该与源码pgvector目录同级
#!/bin/bash
build-essential \
postgresql-server-dev-15 \
llvm-13 \
clang
# 复制本地pgvector代码
COPY pgvector /tmp/pgvector
# 编译并安装pgvector
RUN cd /tmp/pgvector && \
make && \
make install
# 创建初始化脚本来启用扩展
RUN echo "CREATE EXTENSION IF NOT EXISTS vector; CREATE EXTENSION IF NOT EXISTS postgis;" > /docker-entrypoint-initdb.d/10-init-extensions.sql
# 清理
RUN apt-get remove -y build-essential postgresql-server-dev-15 && \
apt-get autoremove -y && \
apt-get clean && \
rm -rf /var/lib/apt/lists/* /tmp/pgvector
EOF
echo -e "${GREEN}Dockerfile已创建${NC}"
# 步骤4: 构建新镜像
echo -e "${YELLOW}步骤4: 构建新的PostgreSQL 15 + PostGIS + pgvector镜像...${NC}"
docker build -t postgres15-pgvector-postgis $BUILD_DIR
if [ $? -ne 0 ]; then
echo -e "${RED}镜像构建失败! 请检查错误信息${NC}"
exit 1
fi
echo -e "${GREEN}镜像构建成功${NC}"
# 步骤5: 启动新容器
echo -e "${YELLOW}步骤5: 启动新的PostgreSQL 15容器...${NC}"
docker run --name $NEW_CONTAINER \
-e POSTGRES_PASSWORD=$PG_PASSWORD \
-v $DATA_DIR:/var/lib/postgresql/data \
-p 5432:5432 \
-d postgres15-pgvector-postgis
if [ $? -ne 0 ]; then
echo -e "${RED}启动新容器失败! 请检查错误信息${NC}"
exit 1
fi
echo -e "${GREEN}新容器已启动${NC}"
# 步骤6: 等待PostgreSQL启动
echo -e "${YELLOW}步骤6: 等待PostgreSQL 15启动...${NC}"
sleep 10
MAX_TRIES=30
TRIES=0
while ! docker exec -it $NEW_CONTAINER pg_isready -U postgres > /dev/null 2>&1; do
echo "等待PostgreSQL启动... ($TRIES/$MAX_TRIES)"
sleep 2
TRIES=$((TRIES+1))
if [ $TRIES -ge $MAX_TRIES ]; then
echo -e "${RED}PostgreSQL启动超时!${NC}"
exit 1
fi
done
echo -e "${GREEN}PostgreSQL 15已启动${NC}"
# 步骤7: 验证扩展安装
echo -e "${YELLOW}步骤7: 验证扩展安装...${NC}"
docker exec -it $NEW_CONTAINER psql -U postgres -c "\dx"
# 步骤8: 测试pgvector功能
echo -e "${YELLOW}步骤8: 测试pgvector功能...${NC}"
docker exec -it $NEW_CONTAINER psql -U postgres -c "
CREATE TABLE IF NOT EXISTS vector_test (id bigserial PRIMARY KEY, embedding vector(3));
INSERT INTO vector_test (embedding) VALUES ('[1,2,3]'), ('[4,5,6]');
SELECT * FROM vector_test ORDER BY embedding <-> '[3,1,2]' LIMIT 5;
"
# 步骤9: 测试PostGIS功能
echo -e "${YELLOW}步骤9: 测试PostGIS功能...${NC}"
docker exec -it $NEW_CONTAINER psql -U postgres -c "
CREATE TABLE IF NOT EXISTS spatial_test (id serial PRIMARY KEY, geom geometry(Point, 4326));
INSERT INTO spatial_test (geom) VALUES (ST_SetSRID(ST_MakePoint(-71.064544, 42.28787), 4326));
SELECT ST_AsText(geom) FROM spatial_test;
"
# 清理构建上下文
echo -e "${YELLOW}清理构建上下文...${NC}"
rm -rf $BUILD_DIR
echo -e "${GREEN}===== 迁移完成! =====${NC}"
echo -e "${YELLOW}注意: 此脚本未恢复原有数据。如需恢复数据,请手动执行备份和恢复操作。${NC}"





浙公网安备 33010602011771号