这篇是搭建测试环境的操作手册,整理给自己和团队成员参考用。
背景是项目从开发转测时,需要在一台干净的 CentOS7 服务器上从头搭起来:基础中间件、CI/CD 环境、微服务部署,整套跑通。记录下来,下次换机器或者新人入职可以直接照着走。
前置假设:CentOS7.6,已安装 Docker,已有 GitLab/Minio/MySQL/Redis/RabbitMQ 等基础资源(如果没有,参考下面的基础中间件启动部分)。
0. 基础中间件 Docker 启动
这部分适用于没有独立中间件服务器的情况,直接在当前机器上用 Docker 启动。
MySQL
docker run -p 3306:3306 --name mysql \ -v /home/mydata/mysql/db:/var/lib/mysql \ -v /home/mydata/mysql/conf:/etc/mysql/conf.d \ -v /home/mydata/mysql/log:/var/log/mysql \ -e MYSQL_ROOT_PASSWORD=your_password \ --restart=always \ -d mysql:8.0.27 --lower_case_table_names=1 --server-id=3306
|
自定义配置文件放在 /home/mydata/mysql/conf/my.cnf,常用配置:
[mysqld] max_connections=1000 sql-mode=STRICT_TRANS_TABLES,NO_ENGINE_SUBSTITUTION
|
Redis
docker run -p 6379:6379 --name redis \ -v /home/mydata/redis/data:/data \ --restart=always \ -d redis:6.2.6 redis-server --appendonly yes
|
MinIO(文件服务器)
docker run -p 9001:9001 -p 9000:9000 \ --name minio \ -d --restart=always \ -e "MINIO_ACCESS_KEY=your_access_key" \ -e "MINIO_SECRET_KEY=your_secret_key" \ -v /mydata/minio/data:/data \ -v /mydata/minio/config:/root/.minio \ minio/minio server /data \ --console-address ":9001" -address ":9000"
|
Nacos(配置/注册中心)
docker run -d --name nacos -p 8848:8848 \ --env MODE=standalone \ --env JVM_XMS=256m \ --env JVM_XMX=256m \ --env JVM_XMN=128m \ --env SPRING_DATASOURCE_PLATFORM=mysql \ --env MYSQL_SERVICE_HOST=192.168.2.110 \ --env MYSQL_SERVICE_PORT=3306 \ --env MYSQL_SERVICE_DB_NAME=nacos_config \ --env MYSQL_SERVICE_USER=root \ --env MYSQL_SERVICE_PASSWORD=your_password \ nacos/nacos-server:v2.1.1-slim
|
使用 MySQL 持久化 Nacos 配置,需提前建 nacos_config 库并执行 Nacos 官方初始化 SQL。
1. 宿主机环境安装
安装 JDK11、Maven3.6.3、Node.js 14(从华为云镜像下载速度快)。
tar -zxvf openjdk-11.0.2_linux-x64_bin.tar.gz -C /home/ tar -zxvf apache-maven-3.6.3-bin.tar.gz -C /home/ tar -zxvf node-v14.18.1-linux-x64.tar.gz -C /home/
|
配置环境变量:
追加:
export JAVA_HOME=/home/jdk-11.0.2 export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar export PATH=$JAVA_HOME/bin:$PATH
export MAVEN_HOME=/home/apache-maven-3.6.3 export PATH=$PATH:$MAVEN_HOME/bin
export NODEJS=/home/node-v14.18.1 export PATH=$NODEJS/bin:$PATH
|
source /etc/profile java -version mvn -v node -v
|
2. Docker 安装与迁移
安装 Docker
yum install -y yum-utils device-mapper-persistent-data lvm2 yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo yum install docker-ce systemctl start docker systemctl enable docker
|
迁移 Docker 数据目录(重要!)
默认 Docker 数据存在 /var/lib/docker(系统盘),生产/测试环境的系统盘往往很小,跑几次 CI/CD 就满了。建议挂载到数据盘。
systemctl stop docker
cp -arf /var/lib/docker /home/
vim /usr/lib/systemd/system/docker.service
systemctl daemon-reload systemctl start docker
docker info | grep "Docker Root Dir"
|
3. Jenkins 部署
用 Docker 跑 Jenkins,同时挂载宿主机的 JDK/Maven/Node.js,让 Jenkins 容器内的构建脚本能调用这些工具:
docker run -d \ -p 10000:8080 \ -p 10001:50000 \ -v /home/jenkins/jenkins_home:/var/jenkins_home \ -v /home/jdk-11.0.2:/usr/local/jdk \ -v /home/apache-maven-3.6.3:/usr/local/maven \ -v /home/node-v14.18.1:/usr/local/node \ -v /var/run/docker.sock:/var/run/docker.sock \ -v /usr/bin/docker:/usr/bin/docker \ -v /etc/localtime:/etc/localtime \ -u root \ --privileged=true \ --name jenkins \ jenkins/jenkins
|
挂载完成后,在容器内建立软连接,让 shell 脚本能直接调用:
docker exec -it jenkins bash
ln -s /usr/local/jdk/bin/* /usr/local/bin/ ln -s /usr/local/maven/bin/* /usr/local/bin/ ln -s /usr/local/node/bin/* /usr/local/bin/
|
Jenkins 插件安装速度慢:进入「系统管理 → 插件管理 → 高级」,替换插件升级站点为清华镜像:
https://mirrors.tuna.tsinghua.edu.cn/jenkins/updates/update-center.json
初始化时检测失败可以跳过,后续手动安装必要插件(Git、Pipeline、Maven Integration 等)。
4. Nginx 部署(按需)
docker run -p 80:80 --name nginx-tmp -d nginx docker cp nginx-tmp:/etc/nginx /mydata/nginx/conf docker stop nginx-tmp && docker rm nginx-tmp
docker run -p 80:80 -p 443:443 -p 8080:8080 \ --name nginx \ -v /mydata/nginx/html:/usr/share/nginx/html \ -v /mydata/nginx/logs:/var/log/nginx \ -v /mydata/nginx/conf:/etc/nginx \ --restart=always \ -d nginx
|
反向代理配置(在 /mydata/nginx/conf/conf.d/ 下新建 .conf 文件):
server { listen 80; server_name your-domain.com;
location / { proxy_pass http://192.168.1.60:9009; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; } }
|
5. 常用运维操作
限制容器内存
防止某个容器把整台机器内存吃光:
docker run -m 4g --memory-swap -1 --name myapp myapp:latest
docker stop myapp docker update myapp -m 6g --memory-swap -1 docker start myapp
|
参数说明:
-m 4g:内存上限 4G--memory-swap -1:不限制 Swap 使用量(只设 -m 不设这个,默认 swap = 2×memory)
查看容器资源使用
docker stats docker stats myapp docker stats --no-stream
|
yum 镜像失效时切换阿里源
CentOS7 官方镜像站已停止维护,yum update 可能报错,替换为阿里源:
cd /etc/yum.repos.d mv CentOS-Base.repo CentOS-Base.repo.backup wget https://mirrors.aliyun.com/repo/Centos-7.repo mv Centos-7.repo CentOS-Base.repo yum clean all yum makecache
|