说明
本文档指导开发构建使用docker以及编排工具docker-compose一键创建社区开发所需要的基础设施,包括:
- jfrog cpp ce制品仓(conan包管理器和服务)
- jenkins流水线(用于openubmc构建流水线)
- nexus制品仓(用于apt、pip、npm源管理)
- 本文档仅是示例,相关工具&软件的文档、授权以及后续的变更都以软件官方为准。
- 本文不包含流水线实现、制品仓配置,后续补充。
环境准备
docker安装
Install Docker Engine on Ubuntu
# apt安装docker
sudo apt-get update
sudo apt-get install ca-certificates curl
sudo install -m 0755 -d /etc/apt/keyrings
sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc
sudo chmod a+r /etc/apt/keyrings/docker.asc
# Add the repository to Apt sources:
echo \
"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu \
$(. /etc/os-release && echo "${UBUNTU_CODENAME:-$VERSION_CODENAME}") stable" | \
sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt-get update
docker-compose安装
docker-compose 是一个容器编排工具,官方文档 安装指导
# 快速安装命令
curl -SL https://github.com/docker/compose/releases/download/v2.33.1/docker-compose-linux-x86_64 -o /usr/local/bin/docker-compose
chmod +x /usr/local/bin/docker-compose
容器编排
docker-compose.yml用以编排容器,将文件放置在/home/podman目录。
mkdir /home/podman -p
cd /home/podman
cat << EOF > ./docker-compose.yml
# yaml 配置实例
version: '3'
services:
nginx:
image: "swr.cn-north-4.myhuaweicloud.com/openubmc-test/nginx:alpine"
restart: always
ports:
- "1080:80"
- "1443:443"
volumes:
- /home/podman/nginx/ssl:/etc/nginx/ssl
- /home/podman/nginx/conf.d:/etc/nginx/conf.d
- /home/podman/nginx/www:/usr/share/nginx/html
links:
- jenkins
- jfrog_conan
- nexus_oss
jenkins:
image: swr.cn-north-4.myhuaweicloud.com/openubmc-test/jenkins:2.444
restart: always
volumes:
- /home/podman/jenkins/:/var/jenkins_home
nexus_oss:
image: swr.cn-north-4.myhuaweicloud.com/openubmc-test/sonatype/nexus3:3.78.0
restart: always
volumes:
- /home/podman/nexus_data:/nexus-data
jfrog_conan:
image: swr.cn-north-4.myhuaweicloud.com/openubmc-test/artifactory-cpp-ce:7.63.12
restart: always
volumes:
- /home/podman/artifactory-cpp-ce:/var/opt/jfrog/artifactory
EOF
创建必要的目录
上述编排脚本需要映射几个目录,需要手工创建。
# 创建jenkins目录
mkdir /home/podman -p
cd /home/podman
mkdir jenkins
chown 1000:1000 jenkins
mkdir nexus_data
chown 200:200 nexus_data
mkdir artifactory-cpp-ce
chown 1030:1030 artifactory-cpp-ce
配置nginx访问jenkins
mkdir /home/podman -p
cd /home/podman
mkdir nginx/conf.d -p
# 创建nginx配置文件,注意将 jenkins.example.com 替换成真实域名
cat << EOF > nginx/conf.d/jenkins.conf
server {
listen 80;
listen [::]:80;
server_name jenkins.example.com;
error_log /var/log/error.log warn;
location / {
client_max_body_size 200M;
proxy_set_header X-Forwarded-Port $http_port;
proxy_set_header X-Forwarded-Proto $http_x_forwarded_proto;
proxy_set_header Host $http_host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass http://jenkins:8080/;
}
}
EOF
配置nginx访问nexus
mkdir /home/podman -p
cd /home/podman
mkdir nginx/conf.d -p
# 创建nginx配置文件,注意将 nexus.example.com 替换成真实域名
cat << EOF > nginx/conf.d/nexus.conf
server {
listen 80;
listen [::]:80;
server_name nexus.example.com;
error_log /var/log/error.log warn;
location / {
client_max_body_size 200M;
proxy_set_header X-Forwarded-Port $http_port;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header Host $http_host;
proxy_pass http://nexus_oss:8081/;
}
}
EOF
配置nginx访问conan
mkdir /home/podman -p
cd /home/podman
mkdir nginx/conf.d -p
# 创建nginx配置文件,注意将 conan.example.com 和 conanui.example.com 替换成真实域名
cat << EOF > nginx/conf.d/conan.conf
server {
listen 80;
listen [::]:80;
server_name conan.example.com;
error_log /var/log/error.log warn;
location / {
client_max_body_size 200M;
proxy_set_header X-JFrog-Override-Base-Url $https://$host;
proxy_set_header X-Forwarded-Port $http_port;
proxy_set_header X-Forwarded-Proto $http_x_forwarded_proto;
proxy_set_header Host $http_host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass http://jfrog_conan:8081/;
}
}
server {
listen 80;
listen [::]:80;
server_name conanui.example.com;
error_log /var/log/error.log warn;
location / {
client_max_body_size 200M;
proxy_set_header X-JFrog-Override-Base-Url $https://$host;
proxy_set_header X-Forwarded-Port $http_port;
proxy_set_header X-Forwarded-Proto $http_x_forwarded_proto;
proxy_set_header Host $http_host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass http://jfrog_conan:8082/;
}
}
EOF
配置域名
nginx配置了多个域名,需要开发者做好域名解析,如果无法修改域名或者没有域名,可以修改hosts文件提供本地化解析。
- windows请参考 windows修改host
- linux请修改/etc/hosts
启动容器
cd /home/podman
# 后台运行
docker-compose up -d
# 或者前台运行
docker-compose up