Docker部署总结

Docker部署方案

步骤

  • 本地搭建Docker环境
  • 本地编译出Docker镜像
  • 将编译出的Docker镜像上传至仓库
  • 登录云主机从仓库上下载镜像
  • 上传本地运行环境到云主机
  • 云主机运行镜像
  • 本地访问网站

本文假设上传镜像的私有仓库为:

  • xx.x.xx.xxx:xxxx

本文假设部署的云主机为:

  • xx.x.xx.xxx

本地搭建Docker环境

  • 必须Win10系统
  • 进入Bios,选项中找到虚拟化(virtual),设为Enable
  • 安装Docker for Windows Installer
  • 在Docker设置中加上指定的私有仓库,例:xx.x.xx.xxx:xxxx

可能会遇到的坑

  • 问题一:拉取国外镜像的时候,拉不下来,时间超时了,可以找个稳定的国内镜像
  • 问题二:在编写Dockerfile文件,尤其注意文件的路径是否正确
  • 问题三:上传配置文件的时候,注意配置文件的IP是否已经修改
  • 问题四:在编译migration镜像的时候,记得看一下工程中是否已经生成了_init文件,目前立武已经帮大家都弄好了
  • 问题五:在本地编写镜像的时候,可以一个个镜像分开编。因为整个工程编镜像的时候会比较久,不容易定位问题
  • 问题六:当遇到db.lock问题时候,找到对应路径下,把db.lock文件删除即可
  • 问题七:建议拉取高版本的数据库镜像

编写Dockerfile文件

编写migrator的Dockerfile_linux,放入services\project\src\Migrator文件夹中

FROM microsoft/dotnet:latest AS publish
WORKDIR /src
COPY ./src/services/project .
WORKDIR ./src/Migrator
RUN dotnet restore
RUN dotnet publish -c Release -o /app
COPY . .

FROM publish AS final
WORKDIR /app
COPY . .
ENTRYPOINT ["dotnet", "Migrator.dll"]

编写host的Dockerfile_linux,放入services\project\src\Web.Host文件夹中

FROM microsoft/dotnet:latest AS publish
WORKDIR /src
COPY ./src/services/project .
WORKDIR ./src/project.Web.Host
RUN dotnet restore
RUN dotnet publish -c Release -o /app
COPY . .

FROM publish AS final
WORKDIR /app
COPY . .
ENTRYPOINT ["dotnet", "Web.Host.dll"]

编写web的Dockerfile_linux,放入src\web\project文件夹中

FROM node AS builder
WORKDIR /web
COPY ./src/web/project .
RUN npm i
RUN npm run build --prod

FROM nginx AS final
WORKDIR /usr/share/nginx/html
COPY --from=builder ./web/dist/. /usr/share/nginx/html

编写docker-compose.yml

version: '3'

services:
    db:
        image: docker.io/mysql
        environment: 
            - MYSQL_ROOT_PASSWORD=123456

        command: mysqld --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci

        ports: 
            - "3306:3306"
        volumes:
            - ./mysql:/var/lib/mysql

    webois.migrator:
        image: xx.xx.xx.xxx:xxxx/web/migrator
        build:
            context: .
            dockerfile: src/services/project/src/Migrator/Dockerfile_linux
        volumes:
            - "./settings/migrator/appsettings.json:/app/appsettings.json"
        depends_on: 
            - db 
        links: 
            - db

    webois.host:
        image:xx.xx.xx.xxx:xxxx/web/host
        environment:
            - ASPNETCORE_ENVIRONMENT=Staging
        build:
            context: .
            dockerfile: src/services/project/src/Web.Host/Dockerfile_linux
        ports:
            - "12360:80"
        volumes:
            - "./settings/host/appsettings.json:/app/appsettings.json"
            - "./settings/host/appsettings.Staging.json:/app/appsettings.Staging.json"
        depends_on: 
            - db 
        links: 
            - db
            
    webois.web:
        image: 10.6.14.169:5000/web/web
        build:
            context: .
            dockerfile: src/web/project/Dockerfile_linux
        ports:
            - "80:80"
        volumes:
            - "./settings/web/appconfig.json:/usr/share/nginx/html/assets/appconfig.json"
            - "./settings/web/nginx.conf:/etc/nginx/nginx.conf"
            - "./settings/web/outputs/:/web/dist/"

编写linux环境下编译镜像,并push指定仓库的.bat脚本

注释:设置指定仓库
::set DOCKER_REGISTRY=xx.x.xx.xxx/public/
set DOCKER_REGISTRY=xx.x.xx.xxx:xxxx

prompt $P$G$T$G
::delete old images
docker rmi %DOCKER_REGISTRY%/web/host


REM ::build 
docker-compose -f docker-compose.yml build
powershell -Command "docker images -f "dangling=true" -q | foreach-object{ docker rmi $_}"

::push image to private registry
docker-compose -f docker-compose.yml  push

上传docker-compose文件和本地运行环境到云主机

  • 使用xshell工具登录云主机
  • 上传docker-compose文件,和setting文件夹

登录云主机从仓库上下载镜像

  • 登录云主机
  • 用户名:ubuntu
  • pwd:ubuntu
  • 上传setting文件中的配置文件
  • 上传compose文件
  • 注意:请将docker-compose中的build部分去掉,在本地编译的时候已经build。

云主机运行镜像

  • 先停止镜像 docker-compose down
  • 再重启镜像 docker-compose up -d

查看run的容器

  • 查看容器的状态,有没有退出的,除了migration的容器
  • 指令:docker ps -a

本地访问网站

  • 登录云主机IP:端口,访问对应网站
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值