.net6项目部署到linxu的docker中

发布时间 2023-04-07 14:55:36作者: 木子zzgxl

.net6项目完成点击发布,进入发布页面

注意这里的目标运行时,不要选择linux系统,要选择 可移植。

项目中右键,添加docker支持,有些ide自动生成的代码,修改为如下代码:

#See https://aka.ms/customizecontainer to learn how to customize your debug container and how Visual Studio uses this Dockerfile to build your images for faster debugging.

FROM mcr.microsoft.com/dotnet/aspnet:6.0 AS base
WORKDIR /app
EXPOSE 80
EXPOSE 443


#如果用system.sqlclient.dll访问数据库,需要加这一句
RUN sed -i 's/TLSv1.2/TLSv1.0/g' /etc/ssl/openssl.cnf

COPY ./ ./

#FROM mcr.microsoft.com/dotnet/sdk:6.0 AS build
#WORKDIR /src
#COPY ["FYSY.Demo/FYSY.Demo.csproj", "FYSY.Demo/"]
#COPY ["FYSY.Comm/FYSY.Comm.csproj", "FYSY.Comm/"]
#COPY ["FYSY.Domain/FYSY.Domain.csproj", "FYSY.Domain/"]
#COPY ["FYSY.Model/FYSY.Model.csproj", "FYSY.Model/"]
#RUN dotnet restore "FYSY.Demo/FYSY.Demo.csproj"
#COPY . .
#WORKDIR "/src/FYSY.Demo"
#RUN dotnet build "FYSY.Demo.csproj" -c Release -o /app/build
#
#FROM build AS publish
#RUN dotnet publish "FYSY.Demo.csproj" -c Release -o /app/publish /p:UseAppHost=false
#
#FROM base AS final
#WORKDIR /app
#COPY --from=publish /app/publish .
ENTRYPOINT ["dotnet", "FYSY.Demo.dll"]

采用文件系统的方式发布项目,然后将发布后的文件传输到linux系统中,我这里使用的XShell和XFtp,我这里上传到了/root/app/testDocker中。

创建镜像文件,文件上传后,进行文件所在目录,cd  文件目录 。然后使用以下命令 创建镜像文件  注意后面的 . 不能少,如:docker build -t dotnet6:1.0 .

docker build -t 镜像名称:版本号 .

启动运行容器 ,使用下面的命令启动容器   其中8001是系统的端口号,80是容器  --restart=always 表示容器停止后自动重启(比如服务器重启了),如果运行容器时没有加这个参数,可以使用docker container update --restart=always 容器名字  来修改,  -e TZ=Asia/Shanghai  表示指定容器的时区,以免.net core获取的时间不正确,-d表示后台运行,  -v 是指定挂载目录/home/OnlineBusiness/dotnet_docker_test宿主机目录,当然没有挂载文件可以不写,:后面的是docker应用内目录

docker run -d -p 8030:80 --name 容器名称 --restart=always -e TZ=Asia/Shanghai -d -v /home/OnlineBusiness/dotnet_docker_test:/app 镜像名称:版本号

如:docker run -d -p 8030:80 --name mydotnet6 --restart=always -e TZ=Asia/Shanghai -d dotnet6:1.0

如果容器启动成功,可以使用docker ps查看运行中的容器,这时使用 服务器IP:端口号 及可访问系统,系统部署完成

docker日志目录 /var/lib/docker/containers/容器ID/容器ID-json.log