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、起飞
访问项目