Linux 离线部署NetCore + Docker部署NetCore

1、下载NETCore SDK,下载后文件拷贝到root文件夹下

下载 .NET Core 3.1 SDK (v3.1.403) - Linux x64 Binaries

2、创建目录

mkdir -p /usr/local/dotnet

3、解压

tar zxf dotnet-sdk-3.1.403-linux-x64.tar.gz -C /usr/local/dotnet

4、winSP进去编辑 /etc/profile 文件在最末尾加入以下内容:
 

#dotNet5
export DOTNET_ROOT=/usr/local/dotnet
export PATH=$PATH:/usr/local/dotnet


5、保存后执行:source /etc/profile 使环境变量配置生效


6、执行dotnet -h 查看成功

7、离线安装docker...略,docker version 查看是否成功

https://www.runoob.com/docker/centos-docker-install.html

8、安装微软镜像包,文件拷贝到root文件夹下

链接: https://pan.baidu.com/s/1MDq3BkK0g2h1V1PiUu59Xg 提取码: bwx8
然后执行:
docker load < dotnet_core_aspnet.tar                 他会得到一串ID
docker images #查看ID                                        就是上面的ID
docker tag [这里修改成:ID] mcr.microsoft.com/dotnet/core/aspnet:3.1-buster-slim

例子:

#docker images #bdca989bc8d3bd57f876b7f1265933f222a7752cd7bfe4fdf969ed22d219f95c
#docker tag bdca989bc8d3bd57f876b7f1265933f222a7752cd7bfe4fdf969ed22d219f95c mcr.microsoft.com/dotnet/core/aspnet:3.1-buster-slim

9、NET Core打包,生成DockerFile文件,只到生成DockerFile即可【重要,打包的时候指定端口】


https://www.cnblogs.com/elsons/p/15343436.html

10、DockerFile配置 ,Core包拷贝到Root/publish下【下面的端口80生成的时候带的,直接改配置无效

#环境运行时基础镜像
FROM mcr.microsoft.com/dotnet/core/aspnet:3.1-buster-slim AS base
#将当前目录内容.copy到镜像目录
COPY . /publish
#设置工作目录
WORKDIR /publish
#对外暴漏端口
EXPOSE 80
#EXPOSE 443
#使用北京时间
#RUN /bin/cp /usr/share/zoneinfo/Asia/Shanghai /etc/localting && echo'Asia/Shanghai' >/etc/timezone
#运行镜像入口命令和可执行文件名称
ENTRYPOINT ["dotnet", "Application.WebApi.dll"]


11、cd /root/publish,构造项目程序镜像,注意名字小写,且注意后面的.,都是固定格式

docker build -f Dockerfile -t webapi:1.0 .

12、查看是否创建完成,里面会出现webapi

docker images

13、暂时启动-黑窗口关闭就会丢,测试用【特别注意端口】

docker run -it -p 8082:80 749be68ef806

14、启动

# 镜像发布为容器
# --name 指定容器名称
# -d 指定容器后台运行
# -p 主机(宿主)端口:容器端口(容器端口映射到主机(宿主)端口 )
# webappdocker镜像名
docker run --name webapi -d -p 8082:80 webapi:1.0

15、开机启动(没尝试过)

docker run --restart=always --name webapi -p 8082:80 -v /home/config/webapi/appsettings.json:/root/publish/appsetting.json -d webapi:1.0

#失败后,先删再执行
#docker ps -a       
#docker stop 8c03ff334716
#docker rm 1b47e4f0206e

# 查看镜像
docker images
# 删除镜像
docker rmi [IMAGE_ID]

重新部署

1、输入docker ps -a
2、docker rm -f  【把步骤1的netcore的id 删掉】
3、docker images 
4、docker rmi 【把步骤3得到的netcore的id删掉】
5、docker文件如下
#环境运行时基础镜像
FROM mcr.microsoft.com/dotnet/core/aspnet:3.1-buster-slim AS base
#将当前目录内容.copy到镜像目录
COPY . /coreapi
#设置工作目录
WORKDIR /coreapi
#对外暴漏端口
EXPOSE 80
#运行镜像入口命令和可执行文件名称
ENTRYPOINT ["dotnet", "Application.WebApi.dll"]
6、cd /root/netcore/coreapi
7、docker build -f Dockerfile -t coreapi:1.0 .
8、测试项目正常不正常
8.1 docker images 
8.2 docker run -it -p 8082:80 【8.1的id】
9、正式部署
docker run --name webapi -d -p 8081:80 coreapi:1.0

部署libgdiplus包

查看日志发现没有这个包

docker logs coreapi

然后下载包

Index of /sources/libgdiplushttps://download.mono-project.com/sources/libgdiplus/

1、cd /root/netcore/libgdiplus-6.0.5

2、权限 chmod +x configure

3、配置  ./configure --prefix=/root/netcore/libgdi

4、安装 

make

make install

以下是爬坑参考资料

Docker对外暴露端口
iptables -t nat -A DOCKER -p tcp -dport 8082 -j DNAT --to-destination 172.17.0.25:8082
https://blog.csdn.net/weixin_45063703/article/details/118790061

--------------------------------
查看端口:netstat -lntp
--------------------------------

查询 netstat -anp 所有开放端口信息

关闭
iptables -A OUTPUT -p tcp --dport 端口号-j DROP
打开
iptables -A INPUT -ptcp --dport 8099 -j ACCEPT
https://blog.csdn.net/weixin_42227661/article/details/118695109

https://www.lxlinux.net/2490.html

查看当前防火墙开放的端口
firewall-cmd --list-all
查看指定端口是否开放命令
firewall-cmd --query-port=80/tcp
移除指定开放端口命令
firewall-cmd --remove-port=80/tcp
最后重新启动firewalld
firewall-cmd --reload
https://blog.csdn.net/qq_45152095/article/details/121985186
--------------------------------

Docker命令
# 查看所有容器运行状态
docker ps -a
docker ps --all
 
# 查看docker状态
systemctl status docker
 
# 重启docker
systemctl restart docker
 
# 删除容器
docker rm [CONTAINER_ID]
 
# 停用全部运行中的容器
docker stop $(docker ps -q)
 
# 删除所有容器(要先停用才能删除)
docker rm $(docker ps -aq)
 
# 查看镜像
docker images
 
# 删除镜像
docker rmi [IMAGE_ID]
 
# 删除所有镜像
docker rmi $(docker images -aq)
 
# 查看容器日志
docker logs -f [CONTAINER_ID]
 
# 容器内访问
docker exec -t webapp_v1 curl -L localhost/home/index
 
# 进入容器
docker exec -it [CONTAINER_ID] bash
 
# 查看容器所有状态信息
docker inspect [CONTAINER_ID]
 
# 查看容器ip地址
docker inspect --format='{{.NetworkSettings.IPAddress}}' [CONTAINER_ID]

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值