发布 asp.net6 项目时的配置

1、目标选择:文件

2、部署模式:独立

3、目标运行时: linux-x64

发布成功后,将项目打包并上传到 linux 服务器

linux 上的操作

1、在解压后的项目文件夹的同级目录中创建 Dockerfile

FROM centos

RUN yum -y install libicu

CMD mkdir -p /wwwroot/publish

COPY ./WebApplication /wwwroot/publish

WORKDIR /wwwroot/publish

CMD cd /wwwroot/publish

CMD chmod 777 WebApplication

EXPOSE 5000

ENTRYPOINT ./WebApplication

2、创建 docker 镜像到当前目录

docker build -t web-app:0.1 .

3、将 asp.net 项目以后台容器的方式运行

docker run -p 5000:5000 -d --name kestrel

可能会遇到的问题

1、Dockerfile 中的 From centos

因为 docker 中默认的centos:latest 是 centos8。但是centos8 已经停止维护,所以 yum 时候的源不可用。可以选择 centos7 也可以修改镜像。

修改镜像

1、启动一个 centos 的镜像实例

docker run -it -d centos

2、查看容器实例的 ID

docker ps
## 假如实例的 ID 是 c55dee3aa1de

3、将容器实例中的配置文件拷贝到宿主机目录,并进入宿主机目录

docker cp c55dee3aa1de:/etc/yum.respo.d ./etctmp
cd etctmp

4、修改配置文件 vim CentOS-Linux-BaseOS.repo 和 vim CentOS-Linux-AppStream.repo

两个文件的修改一致,主要是更换了 baseurl 的源

修改前

mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=AppStream&infra=$infra
#baseurl=http://mirror.centos.org/$contentdir/$releasever/AppStream/$basearch/os/

修改后

#mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=AppStream&infra=$infra
#baseurl=http://mirror.centos.org/$contentdir/$releasever/AppStream/$basearch/os/
baseurl=http://vault.centos.org/$contentdir/$releasever/AppStream/$basearch/os/

5、反向操作,将宿主机中修改后的文件拷贝回容器中

docker cp ../etctmp c55dee3aa1de:/etc/yum.respo.d ./etctmp

6、从修改后的容器实例创建一个新的镜像

docker commit -m "fixed repos" -a "yourname" centos:8.fixed

7、修改 Dockerfile ,再次创建一个带有 asp.net 的镜像

FROM centos:8.fixed

8、再次执行Linux上的操作

标签: linux, docker, asp.net

评论已关闭