1、修改端口
public static IWebHostBuilder CreateHostBuilder(string[] args) =>
WebHost.CreateDefaultBuilder(args)
.UseKestrel()
.UseUrls("http://*:8080", "http://*:80")
.UseStartup<Startup>();
2、添加Dockerfile文件
3、VS根據項目自動生成了Dockerfile模板。稍微修改下
#See https://aka.ms/containerfastmode to understand how Visual Studio uses this Dockerfile to build your images for faster debugging.
FROM mcr.microsoft.com/dotnet/aspnet:5.0 AS base
WORKDIR /app
EXPOSE 8080
FROM base AS final
WORKDIR /app
COPY . .
ENTRYPOINT ["dotnet", "WeTodo.API.dll"]
注意EXPOSE 后面的端口號要與Program中CreateHostBuilder方法設置的保存一致
Tips:該方式構建容器可能體積會比較大,建議分段構建
FROM mcr.microsoft.com/dotnet/aspnet:$version AS base
WORKDIR /app
EXPOSE 5000
ENV ASPNETCORE_URLS=http://+:5000
ENV TZ=Asia/Shanghai
FROM mcr.microsoft.com/dotnet/sdk:$version AS publish
WORKDIR /src
COPY ./ ./
RUN dotnet publish $project -c Release -o /app
FROM base AS final
COPY --from=publish /app /app
ENTRYPOINT ["dotnet", "$project.dll"]
4、根據自身情況選擇發布位置,這里以文件夾為例
5、點擊顯示所有設置進行一些配置
Tips:該項目使用的SQLite數據庫,所以不需要安裝另外的數據庫環境,如果是Mysql等,需要額外在服務器裝一下,可以參考https://luchong.gitbook.io/note/bu-shu-xiang-mu-dao-docker
6、點擊發布,等待VS編譯完成
7、將發布文件Copy到系統中的指定目錄(也可以在VS發布時選擇FTP一步到位)
8、安裝docker
curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun
9、構建鏡像
docker build -t wetodo/api:1.0 --rm .
wetodo/api:1.0 這一段表示 鏡像名稱:Tag
第一次構建可能會有點慢
10、創建並啟動鏡像
docker run -itd -d -p 8080:80 wetodo/api:1.0
11、查看運行中的鏡像
docker ps -a
docker常用命令:
docker stop 容器id
docker start 容器id
docker restart 容器id
#刪除images,通過image的id來指定刪除誰
docker rmi <image id>
12、開放端口
關閉系統防火牆
//查看防火牆狀態
systemctl status firewalld
//開啟防火牆
systemctl start firewalld
//關閉防火牆
systemctl stop firewalld
如果是雲服務器,還得在服務器面板上開放一下端口
13、起飛
訪問項目