Dockerのフロントエンドとバックエンドのデプロイプロセス(バックグラウンド3種類~フォアグラウンド1種類)

バックエンドの展開

1: アイデアをミラーウェアハウス/サーバーに送信 -> Docker デプロイメント

1. Pom レベルで Dockerfile を追加します

FROM eclipse-temurin:8u345-b01-jdk-centos7

LABEL org.opencontainers.image.author="author"

RUN mkdir -p /gateway

WORKDIR /gateway

ARG JAR_FILE=target/gateway.jar

COPY ${JAR_FILE} app.jar

EXPOSE 9999

ENV TZ=Asia/Shanghai JAVA_OPTS="-Xms128m -Xmx256m -Djava.security.egd=file:/dev/./urandom"

CMD java -jar app.jar ${JAVA_OPTS}

2. ローカル pom ファイル内の Docker 構成を補足します。

<plugin>
    <groupId>io.fabric8</groupId>
    <artifactId>docker-maven-plugin</artifactId>
    <version>${docker.plugin.version}</version>
    <configuration>
        <!-- Docker Remote Api-->
        <dockerHost>${docker.host}</dockerHost>
        <!-- Docker 镜像私服-->
        <registry>${docker.registry}</registry>
      <!--                  <pushRegistry>${docker.registry}</pushRegistry>-->
        <!-- 认证信息-->
        <authConfig>
            <push>
                <username>${docker.username}</username>
                <password>${docker.password}</password>
            </push>
        </authConfig>
        <images>
            <image>
                <!-- 镜像名称: 172.17.0.111/library/pig-gateway:2.6.3-->
                <name>${docker.registry}/${docker.namespace}/${project.name}:${project.version}</name>
                <build>
                    <dockerFile>${project.basedir}/Dockerfile</dockerFile>
                </build>
            </image>
        </images>
    </configuration>
</plugin>
// 此方法为直接推送到服务器 镜像名称为:registry/namespace/gateway
<properties>
  <docker.plugin.version>0.32.0</docker.plugin.version>
  <docker.host>http://192.168.1.196:5678</docker.host>
  <docker.registry>registry</docker.registry>
  <docker.namespace>namespace</docker.namespace>
</properties>

// 此方法为直接推送到服务器及docker镜像仓库中 镜像名称为:registry/namespace/gateway
<properties>
  <docker.plugin.version>0.32.0</docker.plugin.version>
  <docker.host>http://192.168.1.196:5678</docker.host>
  <docker.registry>registry</docker.registry>
  <docker.namespace>namespace</docker.namespace>
  <docker.username>admin</docker.username>
  <docker.password>admin123</docker.password>
</properties>

docker.host: 提供された docker 環境 -> docker ビルドはこのサーバーに直接保存されます

3. 本番nacos倉庫(本番/テスト/グレースケール)の接続情報を変更

画像.png

spring:
  cloud:
    nacos:
      username: prod # TODO 根据实际情况修改
      password: prod # TODO 根据实际情况修改
      discovery:
        server-addr: nacos-server-01:8848 nacos-server-02:8848 nacos-server-03:8848
        namespace: 2485a6bf-e71e-45fa-99c1-367828c74b53 # TODO 根据实际情况修改
      config:
        server-addr: ${spring.cloud.nacos.discovery.server-addr}
        namespace: 2485a6bf-e71e-45fa-99c1-367828c74b53 # TODO 根据实际情况修改

3. ローカルプロジェクトがコードをコンパイルしてロードします

画像.png

4. Docker がローカルでイメージをパッケージ化して送信します。

画像.png

5. サーバーは、Docker アカウントにイメージが含まれているかどうかを確認します。

起動方法1:docker run方法

# 服务器登录docker:
docker login --username=888888@126.com registry.cn-hangzhou.aliyuncs.com  -p mima1234
# 密码
password=mima1234
# 查看镜像是否存在:
docker images
# ==========直接启动方式================
docker run -d -p 9999:9999 --name test xxxx
docker run:基于镜像启动一个容器
-d:后台方式启动
-p 9090:80: 端口映射,将宿主机的9090端口映射到容器的80端口
--name:容器名
xxxx:要启动的镜像名称

#=========第二种 指定容器内的环境变量 启动两台======================

#启动镜像
docker run --name elasticsearch -d -e ES_JAVA_OPTS="-Xms512m -Xmx512m" -e "discovery.type=single-node" -p 9200:9200 -p 9300:9300 elasticsearch:7.7.0
--name表示镜像启动后的容器名称  
-d: 后台运行容器,并返回容器ID;
-e: 指定容器内的环境变量
-p: 指定端口映射,格式为:主机(宿主)端口:容器端口

開始モード 2:

#准备:docker-compose.yml
#在包含compose文件夹中启动容器 docker compose up 容器 -d
docker compose up gateway -d

docker-compose.yml

version: '3'
services:

  gateway:
    image: gateway
    restart: always
    extra_hosts:
      - mysql:172.21.199.54
      - register:172.21.199.54
    ports:
      - "9999:9999"
    container_name: gateway
    hostname: gateway

docker-compose.yml

2. サーバーはコードを取得して直接デプロイします

1. コード保存ディレクトリを見つけます -> git が新しく送信されたコードをプルします

git pull

2. Maven がプロジェクトをコンパイルする

mvn clean install -Dmaven.test.skip=true -Ptest

3. 新しいイメージとコンテナを作成します (コードには dockerfile ファイルが含まれています)

docker compose build gateway

画像.png

4. コンテナーを起動します (フォルダーには docker-compose.yml が含まれています)

docker compose up gateway -d

3.アイデアの展開

フロントエンド展開プロセス

1. エクストラネット プロジェクトの展開プロセス

1. 準備物:

以下のもの(nginxイメージを除く)を新しいフォルダーに置きます

  1. フロントエンド dist パッケージ
  2. default.conf 設定ファイル
  3. docker-compose.yml 構成
  4. Dockerfileのパッケージ化構成
  5. nginxミラー
デフォルト.conf

注:
proxy_pass http://192.168.1.166:9999;
アドレスはハードコードされたサーバー アドレスである必要があります

server {
    
    
    listen 80;
    server_name localhost;

    client_max_body_size 5M;

        location / {
    
    
                root /usr/share/nginx/html;
                index index.html;
                try_files $uri $uri/ /sys/$uri /index.html;
        }

    # 后端服务入口:注意维护新增微服务,gateway 路由前缀
    location ~* ^/(code|auth|admin|gen|inst|order|project) {
    
    
       proxy_pass http://192.168.1.166:9999;
       #proxy_set_header Host $http_host;
       proxy_connect_timeout 60s;
       proxy_send_timeout 60s;
       proxy_read_timeout 60s;
       proxy_set_header X-Real-IP $remote_addr;
       proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
       proxy_set_header X-Forwarded-Proto http;
    }
    # 避免端点安全问题
    if ($request_uri ~ "/actuator"){
    
    
        return 403;
    }

}

docker-compose.yml
version: '3'
services:

  admin-ui:
    image: admin-ui #镜像名称
    privileged: true
    restart: always
    container_name: admin-ui #容器名称
    networks:
      - pig_default
    external_links:
      - pig-gateway
    ports:
      - 80:80

# 加入到后端网络, 默认为 pig_default  | docker network ls   查看
networks:
  pig_default:
    external: true

Dockerfile

注:
FROM admin-nginx:latest は
nginx ミラー名である必要があります

FROM admin-nginx:latest
MAINTAINER admin # 维护者信息

# 将项目根目录下dist文件夹下的所有文件复制到镜像中 /usr/share/nginx/html/ 目录下
COPY admin-ui/ /usr/share/nginx/html/
COPY default.conf /etc/nginx/conf.d/default.conf


2.展開を開始する

1. フォルダーに入る

cd /ホーム/hc
画像.png

2. フロントエンドイメージをパッケージ化する

docker build -t admin-ui 。
画像.png

3. コンテナを起動します

docker run -d -p 80:80 --name admin-ui admin-ui
画像.png

4. 正常に開始します

参考: Docker イメージ + Nginx 構成デプロイメント Vue プロジェクト

2. ミラー バージョンの展開プロセス:

参考:ミラーのパッケージ

1. 元のサーバー イメージのパッケージ化:

1. パッケージ化する必要があるイメージとフォルダーを準備します (外部ネットワーク展開プロセスの最初のステップを参照)
2. パッケージ化: docker save -o admin-ui.tar admin-ui (nginx をパッケージ化して配置する必要があります) nginx 経由でデプロイする場合はオン)

2. パッケージ化されたイメージを新しいサーバーに配置するだけです

画像.png
イメージコマンド dockerload< を解凍することで

3. ミラーの展開
画像.png

おすすめ

転載: blog.csdn.net/weixin_44824381/article/details/130385072