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:\projects\first-web\src
cd D:\projects\first-web\src
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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM