• windows下的asp.net core开发及docker下的发布


    参照下面,搭建好开发环境、Docker及配置好Docker加速器

    http://www.cnblogs.com/windchen/p/6257846.html

    参照下面,将windows共享目录挂载到Ubuntu虚拟机

    http://www.cnblogs.com/windchen/p/6236299.html

    假设:D:projects --> /mnt/projects

    参照下面,在Ubuntu上安装好docker compose

    http://www.cnblogs.com/windchen/p/6239494.html

    下载asp.net core运行镜像和构建发布镜像

    docker pull microsoft/aspnetcore
    docker pull microsoft/aspnetcore-build
    docker pull nginx

    建立asp.net core网站

    打开windows命令行工具,建立目录

    mkdir D:projectsfirst-websrc
    cd D:projectsfirst-websrc
    dotnet new -t web

    修改网站Url

    打开Program.cs文件,添加红色字部分

     public static void Main(string[] args)
            {
                var host = new WebHostBuilder()
                    .UseKestrel()
                    .UseUrls("http://*:5000")
                    .UseContentRoot(Directory.GetCurrentDirectory())
                    .UseIISIntegration()
                    .UseStartup<Startup>()
                    .Build();
    
                host.Run();
            }

    利用docker compose建立build、publish环境

    登入Ubuntu,进入Project目录,建立docker-compose.yml文件

    cd /mnt/projects/first-web
    mkdir -p docker/build
    vi docker/build/docker-compose.yml

    输入内容:

    version: "2"
    
    services:
      build-env:
        build: ../../src
        container_name: build-env

    建立script:

    cd /mnt/projects/first-web
    mkdir scripts
    vi scripts/build-publish.sh
    chmod +x scripts/build-publish.sh

    输入如下内容:

    basepath=$(cd `dirname $0`; pwd)
    echo "goto build folder"
    cd $basepath/../docker/build
    echo "run build"
    docker-compose build
    echo "run down"
    docker-compose down
    echo "run up"
    docker-compose up
    echo "copy published files"
    docker cp build-env:/publish/bin $basepath/../

    建立生成build镜像的Dockerfile

    cd /mnt/projects/first-web
    vi src/Dockerfile

    输入内容:

    FROM microsoft/aspnetcore-build
    WORKDIR /build
    
    COPY project.json .
    RUN dotnet restore
    
    COPY . .
    RUN dotnet publish -o /publish/bin/ -c Release

    现在执行build-publish.sh就可以将code build并发布到Project的bin目录了

    cd /mnt/projects/first-web
    ./scripts/build-publish.sh
    ls bin/

    利用docker compose建立proxy和web环境

    建立生成web环境的Dockerfile

    cd /mnt/projects/first-web
    vi bin/Dockerfile

    输入内容:

    FROM microsoft/aspnetcore
    
    WORKDIR /web
    
    COPY . .

    建立生成proxy镜像的Dockerfile

    cd /mnt/projects/first-web
    mkdir -p docker/nginx
    vi docker/nginx/Dockerfile

    输入如下内容:

    FROM nginx
    
    COPY my.nginx.conf /etc/nginx/conf.d/default.conf
    
    EXPOSE 80

    在上面相同目录建立my.nginx.conf,输入

    server {
        listen 80;
    
        location /{
            proxy_pass http://web:5000;
        }
    }

    建立启动container的compose文件

    cd /mnt/projects/first-web
    vi docker/docker-compose.yml

    输入内容:

    version: "2"
    
    services:
      web:
        build: ../bin
        container_name: web
        entrypoint: "dotnet build.dll"
      proxy:
        build: ./nginx
        container_name: proxy
        ports:
          - 80:80
        links:
          - web
        tty: true

    建立启动nginx和web的shell脚本

    cd /mnt/projects/first-web
    vi scripts/start-web.sh
    chmod +x scripts/start-web.sh

    输入如下内容:

    basepath=$(cd `dirname $0`; pwd)
    echo "goto build folder"
    cd $basepath/../docker/
    echo "run build"
    docker-compose build
    echo "run down"
    docker-compose down
    echo "run up"
    docker-compose up -d

    至此准备工作已经完成,可以启动proxy跟web了

    cd /mnt/projects/first-web
    ./start-web.sh

    查看网站是否正常运行:

    curl http://localhost
  • 相关阅读:
    unity3d优化-代码篇(不定期更新)
    Activity的生命周期
    继承了AppCompatActivity的全屏设置
    shaderlab UV动画所需的变量声明
    加载Assetbundle需要注意的地方
    VisualStudio中的编辑后期生成事件
    unity3D射线检测敌人是否在前方
    Unity3D 定时发射子弹
    Unity3D使用NGUI做个弹窗
    Unity3D TouchScript 插件教程一
  • 原文地址:https://www.cnblogs.com/windchen/p/6273509.html
Copyright © 2020-2023  润新知