バックエンドの展開
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倉庫(本番/テスト/グレースケール)の接続情報を変更
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. ローカルプロジェクトがコードをコンパイルしてロードします
4. Docker がローカルでイメージをパッケージ化して送信します。
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
2. サーバーはコードを取得して直接デプロイします
1. コード保存ディレクトリを見つけます -> git が新しく送信されたコードをプルします
git pull
2. Maven がプロジェクトをコンパイルする
mvn clean install -Dmaven.test.skip=true -Ptest
3. 新しいイメージとコンテナを作成します (コードには dockerfile ファイルが含まれています)
docker compose build gateway
4. コンテナーを起動します (フォルダーには docker-compose.yml が含まれています)
docker compose up gateway -d
3.アイデアの展開
フロントエンド展開プロセス
1. エクストラネット プロジェクトの展開プロセス
1. 準備物:
以下のもの(nginxイメージを除く)を新しいフォルダーに置きます
- フロントエンド dist パッケージ
- default.conf 設定ファイル
- docker-compose.yml 構成
- Dockerfileのパッケージ化構成
- 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
2. フロントエンドイメージをパッケージ化する
docker build -t admin-ui 。
3. コンテナを起動します
docker run -d -p 80:80 --name admin-ui admin-ui
4. 正常に開始します
参考: Docker イメージ + Nginx 構成デプロイメント Vue プロジェクト
2. ミラー バージョンの展開プロセス:
参考:ミラーのパッケージ
1. 元のサーバー イメージのパッケージ化:
1. パッケージ化する必要があるイメージとフォルダーを準備します (外部ネットワーク展開プロセスの最初のステップを参照)
2. パッケージ化: docker save -o admin-ui.tar admin-ui (nginx をパッケージ化して配置する必要があります) nginx 経由でデプロイする場合はオン)
2. パッケージ化されたイメージを新しいサーバーに配置するだけです
イメージコマンド dockerload< を解凍することで