Portainer ce 管理容器操作(参考)

1、启动 java 后端服务

1.1、手动构建镜像

先把 java应用程序打成 jar 包,放到指定目录

通过Dockerfile 打成镜像

# 镜像仓库的地址访问地址 harbor.hkc.cn
FROM harbor.hkc.cn/jpaas/openjdk_base:8

# 邮箱
MAINTAINER hw@hkc.cn

RUN   ln -snf /usr/share/zoneinfo/$TIME_ZONE /etc/localtime && echo $TIME_ZONE > /etc/timezone

USER root

WORKDIR /

#导入编译后的jar包
ADD  target/hkc-eip.jar   /jpaas-eip.jar

#暴露端口 不是实际运行端口
EXPOSE 9900

#启动命令  占位符
CMD java $JAVA_OPTS $APPLICTION_OPTS -jar /jpaas-eip.jar

执行构建命令

# 把jar包和Dockerfile 放在同一层目录
docker build -t harbor.hkc.cn/eip/jpass-eip:v3 .

# 先登录到镜像服务器  登录远程
docker login harbor.hkc.cn

# 推送镜像  docker push 镜像名:标签名
docker push harbor.hkc.cn/eip/jpaas-eip:v3

# 镜像仓库地址:查看是否推送
https://xxxx.xxxx.xxxx.xxxx/harbor/

1.1、gitlab 流水线构建镜像

前提条件:

        1、配置了gitrunner 来监听这个分支。

        2、maven 镜像连接远程能下载的。

项目里面需要配置 Dockerfile   .gitlab-ci.yml  这个两个文件

Dockerfile   文件内容(可能会跟手动镜像的不一样。路径问题)

FROM harbor.hkc.cn/jpaas/openjdk_base:8

MAINTAINER liuli@hkc.cn

RUN   ln -snf /usr/share/zoneinfo/$TIME_ZONE /etc/localtime && echo $TIME_ZONE > /etc/timezone

USER root

WORKDIR /

#导入编译后的jar包
ADD  target/hkc-eip.jar   /jpaas-eip.jar

#暴露端口
EXPOSE 9900

#启动命令
CMD java $JAVA_OPTS $APPLICTION_OPTS -jar /jpaas-eip.jar

.gitlab-ci.yml 文件内容

image: harbor.hkc.cn/jpaas/cibase:0.8.1
stages:
  - maven
  - deploy

# 当前路径均为 .gitlab-ci.yml文件所在目录
maven_job:
  stage: maven
  tags:
    - default
  # 指定分支
  only:
    - eip_release_git
    # - eip_release
    # - eip_dev
    # - eip_test
  script:
    - echo "maven job maven version"
    - mkdir -p /root/gitrunner/$CI_PROJECT_NAME
    - cd ./hkc-eip/
    - mvn clean package -DskipTests=true
    # 需要删除定时任务 job 相关代码
    - mkdir ./target/hkc-eip
    - cd ./target/hkc-eip
    - jar -xvf ../hkc-eip.jar
    # 删除不用的 job 文件夹
    - rm -rf ./BOOT-INF/classes/com/redxun/job
    - rm -rf ./BOOT-INF/classes/mapper/job
    # 压缩文件
    - jar -cvfM0 hkc-eip.jar ./
    - cd ..
    #- echo "pwd"   /builds/hkc-eip/hkc-eip-server/hkc-eip/target
    #- pwd
    # 删除旧的
    - rm -rf ../target/hkc-eip.jar
    # 把新的替换过来
    - mv ../target/hkc-eip/hkc-eip.jar ../target/
    - echo "ls"
    - ls
    - rm -rf ./target/hkc-eip
    - cd ..
    - cp -f ./target/*.jar /root/gitrunner/$CI_PROJECT_NAME/

  cache:
    paths:
      - .m2/repository
  # artifacts:
  #   expire_in: 3 hrs
  #   paths:
  #     - ./target/hkc-eip.jar

deploy_job:
  stage: deploy
  image: docker:stable
  variables:
    DOCKER_TLS_CERTDIR: ""
    GODEBUG: "x509ignoreCN=0"
    DOCKER_HOST: "tcp://docker:2375"
  services:
    - name: docker:19.03.8-dind
      alias: docker
      command:
        - "--insecure-registry=harbor.hkc.cn"
  tags:
    - default
  # 指定分支
  only:
    - eip_release_git
    # - eip_release
    # - eip_dev
    # - eip_test
  script:
    - datetime=`date +%Y%m%d%H%M%S`
    - echo "set now datetime"
    - echo $datetime
    - ls -al /root/gitrunner
    - echo "set branch name CI_PROJECT_NAME"
    # - CI_BRANCH_NAME=`git symbolic-ref --short -q HEAD`
    - echo $CI_PROJECT_NAME
    - mkdir target && cp -f /root/gitrunner/$CI_PROJECT_NAME/*.jar ./target/
    - docker login harbor.hkc.cn -u 0179733 -p Qweasd123
    # 注意 Dockerfile 和 nginx 的配置文件的位置
    - docker build -t harbor.hkc.cn/eip/jpaas-eip:$CI_COMMIT_BRANCH-$CI_COMMIT_SHORT_SHA-$datetime -f ./hkc-eip/Dockerfile .
    - docker push harbor.hkc.cn/eip/jpaas-eip:$CI_COMMIT_BRANCH-$CI_COMMIT_SHORT_SHA-$datetime
  after_script:
    - rm -rf /root/gitrunner/$CI_PROJECT_NAME

启动服务:

在 portainer ce 上配置堆栈启动

去 镜像仓库找到最新的镜像文件

 jpaas-eip-server.yml 启动文件信息

version: '3.7'
services:
  jpaas-eip-server:
    # 镜像名  :点进镜像看里面具体的名称
    image: harbor.hkc.cn/eip/jpaas-eip:eip_release_git-c4ace4ed-20240429020258
    # 容器名
    container_name: jpaas-eip-server
    # 主机名
    hostname: jpaas-eip-server
    # 环境配置
    environment:
      TZ: Asia/Shanghai
      APPLICTION_OPTS: "-Dspring.profiles.active=prod"
      JAVA_OPTS: "-Xms4096m -Xmx4096m -XX:+UseG1GC -XX:+UseStringDeduplication  -Xloggc:/root/jpaas-gc.log -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/root/  -Dfile.encoding=utf-8"
    deploy:
      replicas: 1
      placement:
        # 需要部署服务器的标签
        constraints: [node.labels.foo == app]
      restart_policy:
        condition: on-failure
    # 暴露外部端口:内部端口
    ports:
      - 9900:9900
    networks:
      - golbal-service-jpaas-net
# 使用的网络
networks:
  golbal-service-jpaas-net:
       external: true

 启动后检查是否出错(查看日志)

2、启动 前端 服务

2.1、手动构建镜像

先把 前端应用程序打成 dist 包,放到指定目录(把名称改成你Dockerfile 里面配置的文件夹名称)

文件目录

-- eip

-- docker

     -- default.conf (就是 nginx 的配置文件)

-- Dockerfile

Dockerfile   

FROM harbor.hkc.cn/jpaas/nginx:1.14.1

MAINTAINER liuli@hkc.cn

RUN   ln -snf /usr/share/zoneinfo/$TIME_ZONE /etc/localtime && echo $TIME_ZONE > /etc/timezone

USER root

WORKDIR /

#导入编译后的dist
COPY  eip/   /usr/share/nginx/html/eip/
ADD  docker/default.conf  /etc/nginx/nginx.conf

#暴露端口
EXPOSE 80 5001 5005 8005

#启动命令
ENTRYPOINT ["nginx","-g","daemon off;"]

docker/default.conf (nginx 的配置文件)

user  root;
worker_processes  1;

events {
    worker_connections  1024;
}

http {
    include       mime.types;
    default_type  application/octet-stream;

    #log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
    #                  '$status $body_bytes_sent "$http_referer" '
    #                  '"$http_user_agent" "$http_x_forwarded_for"';

    #access_log  /var/log/access.log ;
    #error_log  /var/log/error.log ;

    sendfile        on;
    #tcp_nopush     on;

    keepalive_timeout  65;
    server_tokens off;
    gzip  on;
    gzip_min_length 1k;
    gzip_buffers 4 16k;
    gzip_http_version 1.0;
    gzip_comp_level 3;
    gzip_types text/plain application/javascript application/css  text/css application/xml text/javascript application/x-httpd-php image/jpeg image/gif image/png;
    gzip_vary off;
    gzip_disable "MSIE [1-6]\.";
    client_max_body_size 1000m;
    proxy_connect_timeout 300s;
    proxy_send_timeout 300s;
    proxy_read_timeout 300s;

    resolver 127.0.0.11 valid=10s;

    # 直接走请求 ap
    upstream job {
        server jpaas-eip-job-server:9900;
    }
    # 直接走请求 ap
    upstream gateway {
        server jpaas-eip-server:9900;
    }
    # pc 端 后台界面  ng
    upstream jpaas {
        server jpaas-jpaas-nginx-server:8000;
    }
    # pc 端 表单界面  ng
    upstream form {
        server jpaas-form-nginx-server:8000;
    }

    # eip pc 服务
    server {

       listen       80;
       server_name  localhost;

       location /jpaas {
          client_max_body_size 1000m;
          proxy_connect_timeout 300s;
          proxy_send_timeout 300s;
          proxy_read_timeout 300s;
          proxy_set_header Host $host;
          proxy_set_header X-Real-IP $remote_addr;
          proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
          proxy_pass http://jpaas;
       }

       location /job {
          proxy_set_header Host       $host;
          proxy_pass http://job;
       }

        location / {
            root   html;
            index  index.html index.htm;
        }

       location /eip {
           alias  /usr/share/nginx/html/eip/;
           index  index.html index.htm;
           try_files $uri $uri/ /eip/index.html;
           client_max_body_size 900m;
           client_body_buffer_size 900m;
       }

       location /form {
          client_max_body_size 1000m;
          proxy_connect_timeout 300s;
          proxy_send_timeout 300s;
          proxy_read_timeout 300s;
          proxy_set_header Host $host;
          proxy_set_header X-Real-IP $remote_addr;
          proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
          proxy_pass http://form;
       }

       location /api/ {
          client_max_body_size 1000m;
          proxy_connect_timeout 300s;
          proxy_send_timeout 300s;
          proxy_read_timeout 300s;
          proxy_set_header developer ray;
          proxy_set_header Host $host;
          proxy_set_header X-Real-IP $remote_addr;
          proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
          proxy_pass http://gateway/;
       }

      location /api/srm {
        proxy_set_header Host       $host;
        proxy_pass http://172.16.11.56:2381/;
        client_max_body_size 50m;
        client_body_buffer_size 50m;
        rewrite "^/api/(.*)$" /$1 break;
      }

      location /api/DccProcess/Incomplete.do {
          #proxy_set_header Host       $host;
          #proxy_pass http://10.5.0.75:8150/api/DccProcess/Incomplete.do;
          #client_max_body_size 50m;
          #client_body_buffer_size 50m;
          proxy_set_header Host       $host;
          proxy_pass http://localhost:8002/;
          rewrite ^/api/DccProcess/(.*)$ /api/dcc-process/$1 last; # 使用last进行内部重定向
        }
        location /api/dcc-process {
              proxy_set_header Host       $host;
              proxy_pass http://10.5.0.75:8150/;
              client_max_body_size 50m;
              client_body_buffer_size 50m;
              # rewrite "^/api/(.*)$" /$1 break;
              rewrite ^/api/dcc-process/(.*)$ /api/DccProcess/$1 break;
        }
        location /api/ecs {
            proxy_set_header Host       $host;
            proxy_set_header ORigin     "";
            proxy_pass http://10.5.101.138:14114/;
            client_max_body_size 50m;
            client_body_buffer_size 50m;
            rewrite "^/api/ecs/(.*)$" /$1 break;
        }
          location /api/oa3 {
            proxy_set_header Host       $host;
            proxy_set_header ORigin     "";
            proxy_pass http://10.5.101.138:14114/;
            client_max_body_size 50m;
            client_body_buffer_size 50m;
            rewrite "^/api/oa3/(.*)$" /$1 break;
        }
        location /api/hkc {
            proxy_set_header Host       $host;
            proxy_pass http://172.16.0.212:8090/;
            client_max_body_size 50m;
            client_body_buffer_size 50m;
            rewrite "^/api/(.*)$" /$1 break;
        }
        location /api/qspsams {
            proxy_set_header Host       $host;
            proxy_pass http://10.5.0.225/;
            client_max_body_size 50m;
            client_body_buffer_size 50m;
            rewrite "^/api/(.*)$" /$1 break;
        }
        location /api/goal {
            proxy_set_header Host       $host;
            proxy_pass http://10.5.100.67:7207/;
            client_max_body_size 50m;
            client_body_buffer_size 50m;
            rewrite "^/api/(.*)$" /$1 break;
        }
        location /api/ehr {
            proxy_set_header Host       $host;
            proxy_pass http://10.5.0.199:8089/;
            client_max_body_size 50m;
            client_body_buffer_size 50m;
            rewrite "^/api/ehr/(.*)$" /$1 break;
        }
        location /api/pzdqh {
            proxy_set_header Host       $host;
            proxy_pass http://pz.cqhkc.com:9999/;
            client_max_body_size 50m;
            client_body_buffer_size 50m;
            rewrite "^/api/pzdqh/(.*)$" /$1 break;
        }
        location /api/pzdsh {
            proxy_set_header Host       $host;
            proxy_pass http://10.5.0.183:8080/;
            client_max_body_size 50m;
            client_body_buffer_size 50m;
            rewrite "^/api/pzdsh/(.*)$" /$1 break;
        }
    }
    # 文件服务端口 5001
    server {
        listen       5001;
        server_name  localhost;

        location / {
            root   /root/serverfiles/opt/temp111;
            index  index.html index.htm;
            if ($request_filename ~* .*\.(png)$){
                add_header Cache-Control "no-cache, no-store";
            }
        }
    }
    # 文件服务端口 5005
    server {
        listen       5005;
        server_name  localhost;

        location / {
            root   /root/serverfiles/historyfile;
            index  index.html index.htm;
            if ($request_filename ~* .*\.(png)$){
                add_header Cache-Control "no-cache, no-store";
            }
        }
    }
    # 文件服务端口 8005
    server {
        listen       8005;
        server_name  localhost;

        location / {
            root   /root/serverfiles/upload;
            index  index.html index.htm;
            if ($request_filename ~* .*\.(png)$){
                add_header Cache-Control "no-cache, no-store";
            }
        }
    }
}

执行构建命令

# 把jar包和Dockerfile 放在同一层目录
docker build -t harbor.hkc.cn/eip/jpass-eip-web:v1 .

# 先登录到镜像服务器  登录远程
docker login harbor.hkc.cn

# 推送镜像  docker push 镜像名:标签名
docker push harbor.hkc.cn/eip/jpaas-eip-web:v1

# 镜像仓库地址:查看是否推送
https://xxxx.xxxx.xxxx.xxxx/harbor/

2.2、gitlab 流水线构建镜像

Dockerfile   

FROM harbor.hkc.cn/jpaas/nginx:1.14.1

MAINTAINER liuli@hkc.cn

RUN   ln -snf /usr/share/zoneinfo/$TIME_ZONE /etc/localtime && echo $TIME_ZONE > /etc/timezone

USER root

WORKDIR /

#导入编译后的dist
COPY  eip/   /usr/share/nginx/html/eip/
# 这个可能路径随着具体能访问的路径变化
ADD  jpaas-admin-front/docker/default.conf  /etc/nginx/nginx.conf

#暴露端口
EXPOSE 80 5001 5005 8005

#启动命令
ENTRYPOINT ["nginx","-g","daemon off;"]

docker/default.conf (nginx 的配置文件)

user  root;
worker_processes  1;

events {
    worker_connections  1024;
}

http {
    include       mime.types;
    default_type  application/octet-stream;

    #log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
    #                  '$status $body_bytes_sent "$http_referer" '
    #                  '"$http_user_agent" "$http_x_forwarded_for"';

    #access_log  /var/log/access.log ;
    #error_log  /var/log/error.log ;

    sendfile        on;
    #tcp_nopush     on;

    keepalive_timeout  65;
    server_tokens off;
    gzip  on;
    gzip_min_length 1k;
    gzip_buffers 4 16k;
    gzip_http_version 1.0;
    gzip_comp_level 3;
    gzip_types text/plain application/javascript application/css  text/css application/xml text/javascript application/x-httpd-php image/jpeg image/gif image/png;
    gzip_vary off;
    gzip_disable "MSIE [1-6]\.";
    client_max_body_size 1000m;
    proxy_connect_timeout 300s;
    proxy_send_timeout 300s;
    proxy_read_timeout 300s;

    resolver 127.0.0.11 valid=10s;

    # 直接走请求 ap
    upstream job {
        server jpaas-eip-job-server:9900;
    }
    # 直接走请求 ap
    upstream gateway {
        server jpaas-eip-server:9900;
    }
    # pc 端 后台界面  ng
    upstream jpaas {
        server jpaas-jpaas-nginx-server:8000;
    }
    # pc 端 表单界面  ng
    upstream form {
        server jpaas-form-nginx-server:8000;
    }

    # eip pc 服务
    server {

       listen       80;
       server_name  localhost;

       location /jpaas {
          client_max_body_size 1000m;
          proxy_connect_timeout 300s;
          proxy_send_timeout 300s;
          proxy_read_timeout 300s;
          proxy_set_header Host $host;
          proxy_set_header X-Real-IP $remote_addr;
          proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
          proxy_pass http://jpaas;
       }

       location /job {
          proxy_set_header Host       $host;
          proxy_pass http://job;
       }

        location / {
            root   html;
            index  index.html index.htm;
        }

       location /eip {
           alias  /usr/share/nginx/html/eip/;
           index  index.html index.htm;
           try_files $uri $uri/ /eip/index.html;
           client_max_body_size 900m;
           client_body_buffer_size 900m;
       }

       location /form {
          client_max_body_size 1000m;
          proxy_connect_timeout 300s;
          proxy_send_timeout 300s;
          proxy_read_timeout 300s;
          proxy_set_header Host $host;
          proxy_set_header X-Real-IP $remote_addr;
          proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
          proxy_pass http://form;
       }

       location /api/ {
          client_max_body_size 1000m;
          proxy_connect_timeout 300s;
          proxy_send_timeout 300s;
          proxy_read_timeout 300s;
          proxy_set_header developer ray;
          proxy_set_header Host $host;
          proxy_set_header X-Real-IP $remote_addr;
          proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
          proxy_pass http://gateway/;
       }

      location /api/srm {
        proxy_set_header Host       $host;
        proxy_pass http://172.16.11.56:2381/;
        client_max_body_size 50m;
        client_body_buffer_size 50m;
        rewrite "^/api/(.*)$" /$1 break;
      }

      location /api/DccProcess/Incomplete.do {
          #proxy_set_header Host       $host;
          #proxy_pass http://10.5.0.75:8150/api/DccProcess/Incomplete.do;
          #client_max_body_size 50m;
          #client_body_buffer_size 50m;
          proxy_set_header Host       $host;
          proxy_pass http://localhost:8002/;
          rewrite ^/api/DccProcess/(.*)$ /api/dcc-process/$1 last; # 使用last进行内部重定向
        }
        location /api/dcc-process {
              proxy_set_header Host       $host;
              proxy_pass http://10.5.0.75:8150/;
              client_max_body_size 50m;
              client_body_buffer_size 50m;
              # rewrite "^/api/(.*)$" /$1 break;
              rewrite ^/api/dcc-process/(.*)$ /api/DccProcess/$1 break;
        }
        location /api/ecs {
            proxy_set_header Host       $host;
            proxy_set_header ORigin     "";
            proxy_pass http://10.5.101.138:14114/;
            client_max_body_size 50m;
            client_body_buffer_size 50m;
            rewrite "^/api/ecs/(.*)$" /$1 break;
        }
          location /api/oa3 {
            proxy_set_header Host       $host;
            proxy_set_header ORigin     "";
            proxy_pass http://10.5.101.138:14114/;
            client_max_body_size 50m;
            client_body_buffer_size 50m;
            rewrite "^/api/oa3/(.*)$" /$1 break;
        }
        location /api/hkc {
            proxy_set_header Host       $host;
            proxy_pass http://172.16.0.212:8090/;
            client_max_body_size 50m;
            client_body_buffer_size 50m;
            rewrite "^/api/(.*)$" /$1 break;
        }
        location /api/qspsams {
            proxy_set_header Host       $host;
            proxy_pass http://10.5.0.225/;
            client_max_body_size 50m;
            client_body_buffer_size 50m;
            rewrite "^/api/(.*)$" /$1 break;
        }
        location /api/goal {
            proxy_set_header Host       $host;
            proxy_pass http://10.5.100.67:7207/;
            client_max_body_size 50m;
            client_body_buffer_size 50m;
            rewrite "^/api/(.*)$" /$1 break;
        }
        location /api/ehr {
            proxy_set_header Host       $host;
            proxy_pass http://10.5.0.199:8089/;
            client_max_body_size 50m;
            client_body_buffer_size 50m;
            rewrite "^/api/ehr/(.*)$" /$1 break;
        }
        location /api/pzdqh {
            proxy_set_header Host       $host;
            proxy_pass http://pz.cqhkc.com:9999/;
            client_max_body_size 50m;
            client_body_buffer_size 50m;
            rewrite "^/api/pzdqh/(.*)$" /$1 break;
        }
        location /api/pzdsh {
            proxy_set_header Host       $host;
            proxy_pass http://10.5.0.183:8080/;
            client_max_body_size 50m;
            client_body_buffer_size 50m;
            rewrite "^/api/pzdsh/(.*)$" /$1 break;
        }
    }
    # 文件服务端口 5001
    server {
        listen       5001;
        server_name  localhost;

        location / {
            root   /root/serverfiles/opt/temp111;
            index  index.html index.htm;
            if ($request_filename ~* .*\.(png)$){
                add_header Cache-Control "no-cache, no-store";
            }
        }
    }
    # 文件服务端口 5005
    server {
        listen       5005;
        server_name  localhost;

        location / {
            root   /root/serverfiles/historyfile;
            index  index.html index.htm;
            if ($request_filename ~* .*\.(png)$){
                add_header Cache-Control "no-cache, no-store";
            }
        }
    }
    # 文件服务端口 8005
    server {
        listen       8005;
        server_name  localhost;

        location / {
            root   /root/serverfiles/upload;
            index  index.html index.htm;
            if ($request_filename ~* .*\.(png)$){
                add_header Cache-Control "no-cache, no-store";
            }
        }
    }
}

.gitlab-ci.yml 文件

image: harbor.hkc.cn/jpaas/node:16.20.0-alpine

stages:
    - maven
    - deploy

# 当前路径均为 .gitlab-ci.yml文件所在目录
npm_job:
    stage: maven
    tags:
        - default
    # 指定分支
    only:
        - eip_release_git
        #- eip_release
        #- eip_test
        #- eip_dev
    script:
        - echo "maven job maven version"
        - mkdir -p /root/gitrunner/$CI_PROJECT_NAME
        #- npm install --registry=http://10.5.100.108:18081/repository/npm-hkc-public/
        # 注意具体项目文件路径 需要动态修改  node_modules  是放在服务器上的能访问的依赖文件
        - cp -rf  /root/gitrunner/eip_pc_module/node_modules ./jpaas-admin-front/
        - cd jpaas-admin-front
        # 如果 build 失败,需要对 vue-cli-service 进行授权
        #- chmod 777 node_modules/.bin/vue-cli-service
        - npm run build:prod
        - mv dist eip
        - tar -zcvf eip.tar.gz eip
        - cp -rf eip.tar.gz /root/gitrunner/$CI_PROJECT_NAME/
    cache:
        paths:
            - node_modules
    # artifacts:
    #   expire_in: 3 hrs
    #   paths:
    #     - ./target/hkc-eip.jar

deploy_job:
    stage: deploy
    image: docker:stable
    variables:
        DOCKER_TLS_CERTDIR: ""
        GODEBUG: "x509ignoreCN=0"
        DOCKER_HOST: "tcp://docker:2375"
    services:
        - name: docker:19.03.8-dind
          alias: docker
          command:
              - "--insecure-registry=harbor.hkc.cn"
    tags:
        - default
    # 指定分支
    only:
        - eip_release_git
        #- eip_release
        #- eip_test
        #- eip_dev
    script:
        - datetime=`date +%Y%m%d%H%M%S`
        - echo "set now datetime"
        - echo $datetime
        # - ls -al
        - echo "set branch name CI_PROJECT_NAME"
        - echo $CI_PROJECT_NAME
        # - ls -al /root/gitrunner/$CI_PROJECT_NAME
        - cp -rf /root/gitrunner/$CI_PROJECT_NAME/eip.tar.gz  . && tar -zxvf eip.tar.gz && rm -rf eip.tar.gz
        - docker login harbor.hkc.cn -u 0179733 -p Qweasd123
        # 注意 Dockerfile 和 nginx 的配置文件的位置
        - docker build -t harbor.hkc.cn/eip/jpaas-eip-web:$CI_COMMIT_BRANCH-$CI_COMMIT_SHORT_SHA-$datetime -f ./jpaas-admin-front/Dockerfile .
        - docker push harbor.hkc.cn/eip/jpaas-eip-web:$CI_COMMIT_BRANCH-$CI_COMMIT_SHORT_SHA-$datetime
    after_script:
        - rm -rf /root/gitrunner/$CI_PROJECT_NAME

启动服务:

在 portainer ce 上配置堆栈启动

去 镜像仓库找到最新的镜像文件

jpaas-eip-nginx-server.yml 启动文件信息

version: '3.7'
services:
  jpaas-eip-nginx-server:
    # 镜像名
    image: harbor.hkc.cn/eip/jpaas-eip-web:eip_release_git-ebb79d2d-20240429075512
    # 容器名
    container_name: jpaas-eip-nginx-server
    # 主机名
    hostname: jpaas-eip-nginx-server
    # 环境配置
    environment:
      - TZ=Asia/Shanghai
    volumes:
      - /root/serverfiles/opt/temp111:/root/serverfiles/opt/temp111
      - /root/serverfiles/historyfile:/root/serverfiles/historyfile
      - /root/serverfiles/upload:/root/serverfiles/upload
    # 开放端口
    ports:
      - 80:80
      - 5001:5001
      - 5005:5005
      - 8005:8005
    privileged: true
    deploy:
      replicas: 1
      placement:
        # 需要部署服务器的标签
        constraints: [node.labels.foo == manager]
      restart_policy:
        condition: on-failure
    networks:
      - golbal-service-jpaas-net
# 使用的网络
networks:
  golbal-service-jpaas-net:
       external: true

启动后检查是否出错(查看日志)

3、启动 nginx 做代理

3.1、直接堆栈启动

eip_nginx.yml

version: '3.7'
configs:
   # 定义配置文件
   nginx-config:
     external: true
     name: nginx-config.conf
services:
  nginx:
    # 镜像名称
    image: harbor.hkc.cn/jpaas/nginx:1.14.1
    # 主机名
    hostname: jpaas-top-proxy-nginx-server
    # 容器名
    container_name: jpaas-top-proxy-nginx-server
    environment:
      - TZ=Asia/Shanghai
    # 挂在数据目录
    volumes:
      - /root/serverfiles/opt/temp111:/root/serverfiles/opt/temp111
      - /root/serverfiles/historyfile:/root/serverfiles/historyfile
      - /root/serverfiles/upload:/root/serverfiles/upload
    # 开放端口
    ports:
      - 80:80
      - 5001:5001
      - 5005:5005
      - 8005:8005
    configs:
      - source: nginx-config
        target: /etc/nginx/nginx.conf
    deploy:
      replicas: 1
      placement:
        # 需要部署服务器的标签
        constraints: [node.labels.foo == manager]
      restart_policy:
        condition: on-failure
    privileged: true
    restart: always
    # 使用网络
    networks:
      - golbal-service-jpaas-net

# 定义网络
networks:
  golbal-service-jpaas-net:
       external: true

需要 新增配置文件

nginx-config.yml

user  root;
worker_processes  1;

events {
    worker_connections  1024;
}

http {
    include       mime.types;
    default_type  application/octet-stream;

    #log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
    #                  '$status $body_bytes_sent "$http_referer" '
    #                  '"$http_user_agent" "$http_x_forwarded_for"';

    #access_log  /var/log/access.log ;
    #error_log  /var/log/error.log ;

    sendfile        on;
    #tcp_nopush     on;

    keepalive_timeout  65;
    server_tokens off;
    gzip  on;
    gzip_min_length 1k;
    gzip_buffers 4 16k;
    gzip_http_version 1.0;
    gzip_comp_level 3;
    gzip_types text/plain application/javascript application/css  text/css application/xml text/javascript application/x-httpd-php image/jpeg image/gif image/png;
    gzip_vary off;
    gzip_disable "MSIE [1-6]\.";
    client_max_body_size 1000m;
    proxy_connect_timeout 300s;
    proxy_send_timeout 300s;
    proxy_read_timeout 300s;

    resolver 127.0.0.11 valid=10s;
    
    # 直接走请求 ap 
    upstream job {
        server jpaas-eip-job-server:9900;
    }
    # 直接走请求 ap 
    upstream gateway {
        server jpaas-eip-server:9900;
    }
    # pc 端 界面  ng
    upstream eip {
        server jpaas-eip-nginx-server:8000;
    }
    # pc 端 界面  ng
    upstream eipmobile {
        server jpaas-eip-mobile-nginx-server:8000;
    }
    # pc 端 后台界面  ng
    upstream jpaas {
        server jpaas-jpaas-nginx-server:8000;
    }
    # pc 端 表单界面  ng
    upstream form {
        server jpaas-form-nginx-server:8000;
    }

    # eip pc 服务
    server {

       listen       80;
       server_name  localhost;
       
       location /jpaas {
          client_max_body_size 1000m;
          proxy_connect_timeout 300s;
          proxy_send_timeout 300s;
          proxy_read_timeout 300s;
          proxy_set_header Host $host;
          proxy_set_header X-Real-IP $remote_addr;
          proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
          proxy_pass http://jpaas;
       }
       
       location /job {
          proxy_set_header Host       $host;
          proxy_pass http://job;
       }
       
       location /eip {
          client_max_body_size 1000m;
          proxy_connect_timeout 300s;
          proxy_send_timeout 300s;
          proxy_read_timeout 300s;
          proxy_set_header Host $host;
          proxy_set_header X-Real-IP $remote_addr;
          proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
          proxy_pass http://eip;
       }
       
       location /form {
          client_max_body_size 1000m;
          proxy_connect_timeout 300s;
          proxy_send_timeout 300s;
          proxy_read_timeout 300s;
          proxy_set_header Host $host;
          proxy_set_header X-Real-IP $remote_addr;
          proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
          proxy_pass http://form;
       }

       location /api/ {
          client_max_body_size 1000m;
          proxy_connect_timeout 300s;
          proxy_send_timeout 300s;
          proxy_read_timeout 300s;
          proxy_set_header developer ray;
          proxy_set_header Host $host;
          proxy_set_header X-Real-IP $remote_addr;
          proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
          proxy_pass http://gateway/;
       }
       
      location /api/srm {
        proxy_set_header Host       $host;
        proxy_pass http://172.16.11.56:2381/;
        client_max_body_size 50m;
        client_body_buffer_size 50m;
        rewrite "^/api/(.*)$" /$1 break;
      }
       
      location /api/DccProcess/Incomplete.do {
          #proxy_set_header Host       $host;
          #proxy_pass http://10.5.0.75:8150/api/DccProcess/Incomplete.do;
          #client_max_body_size 50m;
          #client_body_buffer_size 50m;
          proxy_set_header Host       $host;
          proxy_pass http://localhost:8002/;
          rewrite ^/api/DccProcess/(.*)$ /api/dcc-process/$1 last; # 使用last进行内部重定向
        }
        location /api/dcc-process {
              proxy_set_header Host       $host;
              proxy_pass http://10.5.0.75:8150/;
              client_max_body_size 50m;
              client_body_buffer_size 50m;
              # rewrite "^/api/(.*)$" /$1 break;
              rewrite ^/api/dcc-process/(.*)$ /api/DccProcess/$1 break;
        }
        location /api/ecs {
            proxy_set_header Host       $host;
            proxy_set_header ORigin     "";
            proxy_pass http://10.5.101.138:14114/;
            client_max_body_size 50m;
            client_body_buffer_size 50m;
            rewrite "^/api/ecs/(.*)$" /$1 break;
        }
          location /api/oa3 {
            proxy_set_header Host       $host;
            proxy_set_header ORigin     "";
            proxy_pass http://10.5.101.138:14114/;
            client_max_body_size 50m;
            client_body_buffer_size 50m;
            rewrite "^/api/oa3/(.*)$" /$1 break;
        }
        location /api/hkc {
            proxy_set_header Host       $host;
            proxy_pass http://172.16.0.212:8090/;
            client_max_body_size 50m;
            client_body_buffer_size 50m;
            rewrite "^/api/(.*)$" /$1 break;
        }
        location /api/qspsams {
            proxy_set_header Host       $host;
            proxy_pass http://10.5.0.225/;
            client_max_body_size 50m;
            client_body_buffer_size 50m;
            rewrite "^/api/(.*)$" /$1 break;
        }
        location /api/goal {
            proxy_set_header Host       $host;
            proxy_pass http://10.5.100.67:7207/;
            client_max_body_size 50m;
            client_body_buffer_size 50m;
            rewrite "^/api/(.*)$" /$1 break;
        }
        location /api/ehr {
            proxy_set_header Host       $host;
            proxy_pass http://10.5.0.199:8089/;
            client_max_body_size 50m;
            client_body_buffer_size 50m;
            rewrite "^/api/ehr/(.*)$" /$1 break;
        }
        location /api/pzdqh {
            proxy_set_header Host       $host;
            proxy_pass http://pz.cqhkc.com:9999/;
            client_max_body_size 50m;
            client_body_buffer_size 50m;
            rewrite "^/api/pzdqh/(.*)$" /$1 break;
        }
        location /api/pzdsh {
            proxy_set_header Host       $host;
            proxy_pass http://10.5.0.183:8080/;
            client_max_body_size 50m;
            client_body_buffer_size 50m;
            rewrite "^/api/pzdsh/(.*)$" /$1 break;
        }
    }
    # 文件服务端口 5001
    server {
        listen       5001;
        server_name  localhost;

        location / {
            root   /root/serverfiles/opt/temp111;
            index  index.html index.htm;
            if ($request_filename ~* .*\.(png)$){
                add_header Cache-Control "no-cache, no-store";
            }
        }
    }
    # 文件服务端口 5005
    server {
        listen       5005;
        server_name  localhost;
        
        location / {
            root   /root/serverfiles/historyfile;
            index  index.html index.htm;
            if ($request_filename ~* .*\.(png)$){
                add_header Cache-Control "no-cache, no-store";
            }
        }
    }
    # 文件服务端口 8005
    server {
        listen       8005;
        server_name  localhost;
  
        location / {
            root   /root/serverfiles/upload;
            index  index.html index.htm;
            if ($request_filename ~* .*\.(png)$){
                add_header Cache-Control "no-cache, no-store";
            }
        }       
    }
}

在堆栈出查看是否成功

为了实现使用Portainer访问特定端口进行远程Docker容器管理,你需要按照以下步骤操作:首先,确保你的Portainer安装过程中已经将端口映射设置为9000。具体来说,当运行Portainer容器时,你应该使用如下的docker run命令来指定端口映射: 参考资源链接:[Portainer部署教程:快速上手与管理Docker容器](https://wenku.csdn.net/doc/i7cq1mru6i?spm=1055.2569.3001.10343) ``` docker run -it --name portainer -p 9000:9000 --restart=always -v /var/run/docker.sock:/var/run/docker.sock -v /path/to/your/portainer/data:/data -d cr.portainer.io/portainer/portainer-ce:2.11.0 ``` 在这个命令中,`-p 9000:9000`参数将宿主机的9000端口映射到Portainer容器的9000端口。请确保端口号9000没有被系统中的其他应用占用。其次,在完成Portainer的安装后,你可以在任意浏览器中输入`***宿主机的IP地址:9000`来访问Portainer的Web界面。在首次登录时,Portainer会提示你设置一个管理员用户名和密码。 完成登录后,如果你希望远程管理其他Docker主机,需要在Portainer界面中添加相应的Docker主机。确保远程Docker主机允许从你的IP地址访问,并且Docker守护进程配置了监听TCP端口。默认情况下,Docker守护进程监听2375端口,如果你更改了监听端口,确保在Portainer中添加Docker主机时使用正确的端口号。 最后,配置完成后,你就可以通过Portainer的图形界面来管理远程Docker容器了。这个过程中,你可以通过Portainer提供的界面来部署、停止、删除容器,以及管理Docker镜像等。为了更好地掌握Portainer的使用,推荐查看《Portainer部署教程:快速上手与管理Docker容器》。这份资料不仅涵盖了Portainer的基本部署和配置,还介绍了如何进行Docker镜像管理等高级操作,适合希望深入了解Docker管理的读者。 参考资源链接:[Portainer部署教程:快速上手与管理Docker容器](https://wenku.csdn.net/doc/i7cq1mru6i?spm=1055.2569.3001.10343)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值