- 在项目根目录新建
Dockerfile文件,添加以下配置
FROM harbor.indata.cc/XX/XX-node:latest
WORKDIR /data
COPY index.js /data
// 端口
EXPOSE 3000
// 配置命令
CMD ["pm2-docker", "start", "index.js"]
- docker build -t 【镜像名】.
- 打包平台KUBESPHERE配置,编辑 Jenkinsfile
pipeline {
agent {
node {
label 'nodejs'
}
}
stages {
stage('拉取分支代码') {
when {
environment name: 'API_ENV', value: 'dev'
}
steps {
git(url: '${REGISTRY}', credentialsId: 'gitlab-id', branch: 'dali', changelog: true, poll: false)
}
}
stage('构建并推送镜像') {
steps {
container('nodejs') {
sh 'docker build -f Dockerfile -t harbor.indata.cc/XX/${APP_NAME}:${BUILD_TAG} .'
withCredentials([usernamePassword(credentialsId : 'harbor-id' ,passwordVariable : 'DOCKER_PASSWORD' ,usernameVariable : 'DOCKER_USERNAME' ,)]) {
sh 'echo "${DOCKER_PASSWORD}" | docker login harbor.indata.cc -u "${DOCKER_USERNAME}" --password-stdin'
sh 'docker push harbor.indata.cc/XX/${APP_NAME}:${BUILD_TAG}'
}
}
}
}
stage('部署至开发环境') {
when {
environment name: 'API_ENV', value: 'dev'
}
steps {
git(credentialsId: 'gitlab-id', url: 'https://gitlab.indata.cc/sa/deploy.git', branch: 'master', changelog: true, poll: false)
kubernetesDeploy(enableConfigSubstitution: true, deleteResource: false, kubeconfigId: 'kubeconfig', configs: 'dev/dev-nodejs.yaml')
}
}
}
parameters {
choice(name: 'API_ENV', choices: ['dev'], description: '部署环境')
string(name: 'BRANCH', defaultValue: 'dali', description: '部署分支')
string(name: 'APP_NAME', defaultValue: 'dali', description: '服务名称')
string(name: 'PORT', defaultValue: '3000', description: '服务端口')
string(name: 'REGISTRY', defaultValue: 'XXXX.git', description: 'git仓库地址')
}
}
-
BRANCH 和gitlab对应分支名保持一致
-
PORT 和
Dockerfile文件内设置的保持一致 -
REGISTRY 填写正确的git仓库地址
-
第一个stage steps注意分支名称
-
第二个stage 注意docker命令构建镜像
-
打包平台KUBESPHERE运行成功后,查看rancher上是否构建出新容器
-
配置nginx
- 可以通过cp复制一个新的.conf文件
ls
cd
ls
cp XXXXX newXXX
- 修改新的.conf文件, 修改server {}内server_name及对应端口(与Dockerfile,Jenkinsfile保持一致),第一个server{}内server_name配置想要配置的域名,第二个server{}内server_name对应rancher内容器名
vi newXXX
server {
listen 443 ssl;
server_name XXXXXXX;
location / {
proxy_pass http://XXXXXX;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header REMOTE-HOST $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
server {
listen 配置的端口号;
server_name rancher名称;
rewrite ^(.*) XXXXXXX;
}
- 检查重新加载nginx,查看是否配置成功
sh check-nginx
sh reload-nginx
- 都成功后,配置host(nginx的IP对应配置的域名),访问域名就可以成功看到代码中的内容了