參照下面,搭建好開發環境、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