发布项目
- 在 VS 里面选择你需要发布的程序右击添加 docke 支持,选择要发布的OS目标是 Linux 。然后会生成一个 Dockerfile 文件
- 编辑 Dockerfile 文件注释掉一部分,然后添加
COPY . .
,这边注意俩个.
之间有个空格
#See https://aka.ms/containerfastmode to understand how Visual Studio uses this Dockerfile to build your images for faster debugging.
#Depending on the operating system of the host machines(s) that will build or run the containers, the image specified in the FROM statement may need to be changed.
#For more information, please see https://aka.ms/containercompat
FROM mcr.microsoft.com/dotnet/aspnet:6.0 AS base
WORKDIR /app
EXPOSE 80
EXPOSE 443
# 将当前 Dockerfile 所在目录下的所有文件复制到容器中的当前工作目录。
COPY . . # 注意这边俩个点之前有个空格,注意这边俩个点之前有个空格第一个 . 表示 Dockerfile 所在目录,第二个 . 表示容器中的当前工作目录,因此该命令会将当前目录下的所有文件复制到容器的当前工作目录。
#FROM mcr.microsoft.com/dotnet/sdk:6.0 AS build
#WORKDIR /src
#COPY ["Zocono.WMS.WebApi/Zocono.WMS.WebApi.csproj", "Zocono.WMS.WebApi/"]
#COPY ["Zocono.WMS.Application/Zocono.WMS.Application.csproj", "Zocono.WMS.Application/"]
#COPY ["Zocono.WMS.Domain/Zocono.WMS.Domain.csproj", "Zocono.WMS.Domain/"]
#COPY ["Zocono.WMS.Data/Zocono.WMS.Data.csproj", "Zocono.WMS.Data/"]
#COPY ["Zocono.WMS.Dto/Zocono.WMS.Dto.csproj", "Zocono.WMS.Dto/"]
#RUN dotnet restore "Zocono.WMS.WebApi/Zocono.WMS.WebApi.csproj"
#COPY . .
#WORKDIR "/src/Zocono.WMS.WebApi"
#RUN dotnet build "Zocono.WMS.WebApi.csproj" -c Release -o /app/build
#
#FROM build AS publish
#RUN dotnet publish "Zocono.WMS.WebApi.csproj" -c Release -o /app/publish /p:UseAppHost=false
#
#FROM base AS final
#WORKDIR /app
#COPY --from=publish /app/publish .
ENTRYPOINT ["dotnet", "Zocono.WMS.WebApi.dll"]
- 右击发布项目到文件夹,或者在需要发布项目文件夹下面打开
PowerShell
或者CMD
运行dotnet publish
命令,默认发布到你程序文件夹下的\bin\Debug\net6.0\publish
文件夹
构建镜像
在\bin\Debug\net6.0\publish
文件夹或发布好的程序文件夹下打开 PowerShell
运行一下命令进行构建镜像
# 1. 如果文件夹下有 dockerfile 文件:
docker build -t 127.0.0.1:5000/<name>:<tag> .
# 2. 如果文件夹下没有 dockerfile 文件,运行需要指定 dockerfile 文件
docker build -t 127.0.0.1:5000/<name>:<tag> -f <path> .
# 127.0.0.1:5000/ 指定 Docker Registry 的地址(私有仓库地址是什么就改什么)
# <name> 代表镜像名
# <tag> 代表版本标签
# <path> 代表指定的 dockerfile 文件如:D:\WMS\Dockerfile
注意:上面命令的 .
不能遗漏,.
表示当前目录,用于指定要运行的 Docker 镜像所在的目录。
-t
: 镜像的名字及标签;-f
:指定要使用的 Dockerfile 路径;
docker build
详细参数查看:官方文档 - docker build 命令
运行容器
构建完镜像运行
docker run -d -p <ip>:<port>:<dockerfilePort> --name=<containerName> --restart=always <name>:<tag>
# <ip> 如果没有指定 ip 默认 localhost
# <prot> 主机端口
# <containerPort> 容器端口
# <containerName> 给容器命名
# <name> 镜像名
# <tag> 版本标签
-
-i
:以交互模式运行容器,通常与 -t 同时使用; -
-t
:为容器重新分配一个伪输入终端,通常与 -i 同时使用; -
-d
:后台运行容器,并返回容器ID; -
-p
:随机端口映射,容器内部端口随机映射到主机的端口; -
--name
:为容器指定一个名称 -
--restart
:指定容器在退出后的重启策略。(有以下选项)no
:默认策略,容器退出时不重启容器;on-failure
:在容器非正常退出时(退出状态非0)才重新启动容器;on-failure:3
:在容器非正常退出时重启容器,最多重启3次;always
:无论退出状态是如何,都重启容器;unless-stopped
:在容器退出时总是重启容器,但是不考虑在 Docker 守护进程启动时就已经停止了的容器。
docker run
详细参数查看:官方文档 - docker run 命令
如果要修改已有容器请用 docker update
命令。如:
docker update --restart=always 容器ID(或者容器名)
docker update
详细参数选项请看:官方文档 - docker update 命令