Docker部署IIS+asp.net网站操作步骤说明

(以下操作在windows10下完成)

  • 制作Dockerfile文件

这个可以借助visual studio来生成。生成后修改其内容为如下:

FROM microsoft/aspnet:4.7.2-windowsservercore-1803

SHELL ["powershell", "-command"]

#引入IIS配置模块

RUN Import-Module IISAdministration; \    

Import-Module WebAdministration; \    

Set-ItemProperty -Path IIS:\AppPools\DefaultAppPool -Name "processModel.loadUserProfile" -Value true;

WORKDIR /inetpub/wwwroot

COPY Publish/. ./

*dockerfile命令解释

FROM指令

FROM指令必须指定,且需要在Dockerfile其他指令的前面。指定的基础指令可以是官方远程仓库中的,也可以是位于本地仓库。后续的指令都依赖于该指令指定的image。 在同一个Dockerfile中建立多个镜像时,可以使用多个FROM指令。

         SHELL指令

SHELL指令允许覆盖用于shell形式的命令的默认shell 。Linux上的默认shell是["/bin/sh", “-c”],而在Windows上[“cmd”, “/S”, “/C”]。

         RUN指令

                   RUN <command> 在shell终端中运行命令,在Linux中默认是/bin/sh –c,在Windows中默认是powersell

         WORKDIR指令

格式为: WORKDIR /path/to/workdir

切换⽬录指令,类似于cd命令,对RUN、CMD、ENTRYPOINT⽣效。

         COPY指令

复制本地的src到容器的dest, 和ADD指令相似,但是COPY不支持URL和压缩包。

  • 生成

将发布好的网站文件复制到准备用作docker制作的文件夹下的Publish文件夹下,即Dockerfile中COPY命令后指定的源路径。如图:

badjs docker部署 docker部署iis项目_badjs docker部署

在cmd窗口运行命令:

docker build –t 大名/小名:标签 .

*注意后面的 .  这个“.”表示当前路径,构建的时候要保证jar包或是publish文件夹和Dockerfile文件在同一个文件夹下。大名、小名、标签根据自己的业务场景制定。

--tag, -t: 镜像的名字及标签,通常 name:tag 或者 name 格式;可以在一次构建中为一个镜像设置多个标签。

生成成功后可以在docker desktop中查看生成的镜像。

badjs docker部署 docker部署iis项目_badjs docker部署_02

点击右侧的 “RUN” 按钮启动容器。启动配置参数如下图:

badjs docker部署 docker部署iis项目_docker_03

启动后的容器如下图:

badjs docker部署 docker部署iis项目_badjs docker部署_04

点击如图所示的按钮,即可以在浏览器中打开网站,直观的就可以看到打包的成功与否。

  • 导出镜像文件

在cmd窗口输入: docker images 可以看到所有的在运行的镜像。如图:

badjs docker部署 docker部署iis项目_asp.net_05

执行命令 docker save fd973c356bc5 >  D:\iis_docker.tar

  • 生产环境部署

将导入的tar文件复制到生产环境机器上,然后执行如下命令:

docker load < 路径\文件名

可以依据具体使用场景来选择命令

  • 若是只想备份images,使用save、load即可
  • 若是在启动容器后,容器内容有变化,需要备份,则使用export、import

至此整个操作完成。