Docker前后端部署流程(后台三种-前台一种)

后端部署

一:Idea提交到镜像仓库/服务器 -> 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 build 后会直接保存到这个服务器中

3、修改生产nacos仓库的连接信息(生产/测试/灰度)

image.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、本地项目编译加载代码

image.png

4、docker本地打包并提交镜像

image.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

二、服务器拉取代码直接部署

1、找到代码存放目录->git拉取新提交代码

git pull

2、maven编译项目

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

3、新建镜像及容器(代码内包含dockerfile文件)

docker compose build gateway

image.png

4、启动容器(文件夹内包含docker-compose.yml)

docker compose up gateway -d

三、idea部署

前端部署流程

1、外网项目部署流程

1、准备资料:

将以下(除了nginx镜像)都放到一个新建的文件夹中

  1. 前端dist包
  2. default.conf配置文件
  3. docker-compose.yml配置
  4. Dockerfile 打包配置
  5. nginx镜像
default.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 /home/hc
image.png

2、打包前端镜像

docker build -t admin-ui .
image.png

3、启动容器

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

4、启动成功
参考:Docker镜像+Nginx配置部署 Vue 项目

2、镜像版本部署流程:

参考:镜像打包

1、原先的服务器镜像打包:

1、准备好需要打包的镜像及文件夹(参考外网部署流程第一步)
2、打包:docker save -o admin-ui.tar admin-ui(通过nginx部署的需要把nginx也打包放上去)

2、只需要将打包好的镜像放到新的服务器上

image.png
通过解压缩镜像命令 docker load <

3、镜像部署
image.png
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

50W程序员都在看

qiugan

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值