一,在前两篇文章,我们搭建好docker,现在我们怎么跑netcore项目呢?其实docker是有三层给镜像,默认镜像--极简Linux+CoreCLR---APS.NETCORE
1》我们先需要新建一个core的demo,这是一个默认的mvc项目,就只是添加了docker支持,如下图
操作这个步骤会多了Dockerfile这个文件,文件内容默认就好
将Dockerfile这个文件复制到根目录
我们看看默认生成的Dockerfile是怎样的
FROM mcr.microsoft.com/dotnet/core/aspnet:3.1-buster-slim AS base WORKDIR /app EXPOSE 80 FROM mcr.microsoft.com/dotnet/core/sdk:3.1-buster AS build WORKDIR /src COPY ["DockerDemo/DockerDemo.csproj", "DockerDemo/"] RUN dotnet restore "DockerDemo/DockerDemo.csproj" COPY . . WORKDIR "/src/DockerDemo" RUN dotnet build "DockerDemo.csproj" -c Release -o /app/build FROM build AS publish RUN dotnet publish "DockerDemo.csproj" -c Release -o /app/publish FROM base AS final WORKDIR /app COPY --from=publish /app/publish . ENTRYPOINT ["dotnet", "DockerDemo.dll"]
我们来解析下命令的含义:
1》FROM:基础镜像
2》WORKDIR:工作目录,类似于cd命令
3》EXPOSE 映射端口
4》COPY:功能类似ADD,但是是不会自动解压文件,也不能访问网络资源
5》RUN:构建镜像时执行的命令
6》#ENTRYPOINT:配置容器,使其可执行化。配合CMD可省去"application",只使用参数。
综上所得:dockerfile最总的命令就是:准备基础镜像--cope代码--编译---发布---dotnet
二,现在我们将整个项目文件复制到centos的文件夹下,在centos打包成镜像,我的文件目录
三,执行打包逻辑
1》先去文件的目录下,执行以下命令
cd /root/DockerDemo
2》执行打包镜像命令,注意这里Dockerfile后面是有一个.(ps:点)的,这个点表示的意思是当前目录
docker build -t dockerdemo -f Dockerfile .
执行查看镜像命令
docker images
结果如下
3》生成容器实例
docker run -itd -p 8082:80 dockerdemo
成功结果
查看容器命令
docker ps -a
这里的staus是up证明已经跑起来了,如果有问题,我们用查看日志的方式查看下异常
docker logs asa85b928196
4》测试下访问是否成功(ps:172.17.0.1是我虚拟机的ip,你可以用ip address命令查看Ip地址)
ip address
发现虚拟机ip和自己电脑访问ip
curl http://172.17.0.1:8002
如下返回了html
虚拟机浏览器访问地址
主机访问IP地址:http://192.168.60.130:8082/
我们查看dotnet的信息
dotnet --info
5》删除所有容器(实例),因为刚刚发布了太多影响到我们查看
docker rm $(docker ps -aq)
6》删除所有镜像
docker rmi -f $(docker images)