asp.net6 独立部署版本 打包为 docker 镜像后在 linux 中发布
发布 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上的操作
评论已关闭