.net core程序发布到Docker

近日,领导要求把目前的.net core程序发布到Docker上,于是基于之前的学习然后摸着石头过河,特别把重要的核心内容记录一下。

1.端口

网关:13021
API:13022
WEB:13023

2.Dockerfile

2.1前端web

FROM 192.168.103.136/library/gd/angular:5.2 AS base
WORKDIR /app
EXPOSE 80

COPY . /app
COPY ./nginx.conf /etc/nginx

RUN rm -rf /app/nginx.conf

2.2GDNP

FROM 192.168.103.136/library/gd/dotnet/aspnet:2.2 AS base
# FROM microsoft/dotnet:2.2-aspnetcore-runtime AS base
WORKDIR /app
EXPOSE 80

COPY . /app

ENTRYPOINT ["dotnet", "GD.NP.ServicesHost.dll"]

2.3API

FROM 192.168.103.136/library/gd/dotnet/aspnet:2.2 AS base
# FROM microsoft/dotnet:2.2-aspnetcore-runtime AS base
WORKDIR /app
EXPOSE 80

COPY . /app

ENTRYPOINT ["dotnet", "BDCQYTB.Server.ServicesHost.dll"]

3.发布

2.1前端web

  1. 构建镜像

    # 需要进入到目录:/usr/src/gdsoft/10002_bdcqytb/QYTB_WEB
    docker build -t qytb_web .
    
  2. 创建容器

    docker run -d -p 03023:80 --name qytb_web qytb_web
    
  3. 浏览器输入地址测试:http://192.168.103.140:03023/

  4. 删除所有

    docker rm -f qytb_web
    docker rmi qytb_web
    

2.2GDNP

  1. 构建镜像

    # 需要进入到目录:/usr/src/gdsoft/10002_bdcqytb/QYTB_GDNP
    docker build -t qytb_gdnp .
    
  2. 创建容器

    docker run -d -p 03021:80 --name qytb_gdnp qytb_gdnp -v /etc/localtime:/etc/localtime -e TZ=Asia/Shanghai
    
  3. 浏览器输入地址测试:http://192.168.103.140:03021/

  4. 删除所有

    docker rm -f qytb_gdnp
    docker rmi qytb_gdnp
    

2.3API

  1. 构建镜像

    # 需要进入到目录:/usr/src/gdsoft/10002_bdcqytb/QYTB_API
    docker build -t qytb_api .
    
  2. 创建容器

    docker run -d -p 03022:80 --name qytb_api qytb_api -v /etc/localtime:/etc/localtime -e TZ=Asia/Shanghai
    
    docker run -d -p 03022:80 --rm --privileged --name qytb_api qytb_api
    
  3. 浏览器输入地址测试:http://192.168.103.140:03022/

  4. 删除所有

    docker rm -f qytb_api
    docker rmi qytb_api
    

YAML文件

version: '3'

services:
  # 应用网关配置
  qytb_gdnp:
    build: ./QYTB_GDNP
    container_name: qytb_gdnp
    restart: always
    ports:
      - 13021:80
    network_mode: bridge
          
      
  # 业务API配置
  qytb_api:
    build: ./QYTB_API
    container_name: qytb_api
    restart: always
    ports:
      - 13022:80
    network_mode: bridge
      

  # 业务网站配置
  qytb_web:
    build: ./QYTB_WEB
    container_name: qytb_web
    restart: always
    ports:
      - 13023:80
    network_mode: bridge 

4.备注

4.1常用命令和参数

  • Linux地址:192.168.103.140
  • 基础研发部搭建的dockerhub:https://192.168.103.136/
  • 文件存放路径:/usr/src/gdsoft/10002_bdcqytb
  • nginx路径:/etc/nginx/nginx.conf
  • 删除容器:docker rm -f qytb_web
  • 删除镜像:docker rmi qytb_web
  • 进入容器:docker exec -it qytb_web /bin/bash

4.2防火墙开启端口

# 宿主机开启端口
firewall-cmd --permanent --zone=public --add-port=13021/tcp 
firewall-cmd --permanent --zone=public --add-port=13022/tcp 
firewall-cmd --permanent --zone=public --add-port=13023/tcp 
firewall-cmd --reload

4.3产品编号

全豫通办办理:03020 qytb

司法查控总对总:03021 sfckzdz
税务总对总:03022 swzdz
动态质量监管系统:03023 bdcdjsjdtjgxt

4.4DockerCompose

  • docker-compose up 创建镜像、创建容器、启动容器
  • docker-compose up -d 创建镜像、创建容器、启动容器(后台)
  • docker-compose ps 列出项目中目前所有的容器
  • docker-compose start 启动已经存在的服务容器
  • docker-compose stop 停止正在运行的容器,可以通过docker-compose start 再次启动
  • docker-compose down 停止和删除容器、网络、卷、镜像
posted @ 2021-11-19 16:35  段江涛IT  阅读(447)  评论(0编辑  收藏  举报
页脚HTML代码