netcore 程序部署到 docker 1. 基础准备
- Ubuntu 18.04
- docker version 18.09
- netcore 2.1
2. 简介
自从 netcore 支持跨平台之后, 以及现在很多公司都是采用容器化部署, 今天在比较空闲的时候学习了一下.
3. 使用
3.1 创建 netcore 项目 , 选择 API 程序完成创建
- <喎"/kf/ware/vc/" target="_blank" class="keylink">vcD4KCjxwPjMuMiDM7bzTZG9ja2VyZmlsZTwvcD4KPHA+z+7Ev9PSvPw9obfM7bzTPaG3ZG9ja2Vy1qez1qOszO2807PJuabWrrrzu+HJ+rPJ0ru49mRvY2tlcmZpbGXOxLz+o6y08r+quMPOxLz+o6zPtc2z19S2r8n6s8nBy9K7ttG0+sLro6y1q8rH1Nq3orK8tcTKsbryt6LP1rK7v8nTw6Os0vK0y7TTzfjJz9XSwcvPwsPm1eLW1re9yr29+NDQt6KyvKOssNFkb2NrZXJmaWxlyvTQ1LjEzqrKvNbVuLTWxqOst6KyvM7EvP61xMqxuvLWsb3TsNFkb2NrZXJmaWxlzsS8/tKy0ru/6beisryjrMjnz8LNvMXk1sO1xGRvY2tlcmZpbGXOxLz+o7o8L3A+CjxwPjxpbWcgc3JjPQ=="https://www.2cto.com/uploadfile/Collfiles/20190422/201904221224004.png" alt="\" />
- FROM microsoft/dotnet:latest #所需依赖
- WORKDIR /web #容器中系统工作空间
- # 拷贝当前文件夹下的文件到容器中系统的工作空间 (注意:"." 后面有空格)
- COPY . ./
- EXPOSE 80 #对外提供的端口号
- EXPOSE 443
- # 容器中使用 ["dotnet","系统启动的 dll"] 来运行应用程序
- ENTRYPOINT ["dotnet", "testDocker.dll"]
3.3 发布
跟以往发布 net 程序一样选择文件系统进行发布:
3.4 安装 ASP.NET core 镜像
sudo docker pull microsoft/dotnet
因为我们在 dockerfile 中要求的 from 镜像是 microsoft/aspnetcore:latest, 所以下载的时候我们直接 pullmicrosoft/dotnet, 如果下载慢的话 可以配置国内镜像站, 这里我用的阿里云的镜像
sudo vi /etc/apt/sources.list
镜像下载完成之后输入 sudo docker images 检查一下是否下载成功, 下图中箭头所指就是我们下载的镜像, 到此需要准备工作已经完成.
sudo docker images
3.5 把文件上传到 liunx 指定文件夹当中
本人所用 sudo rz 把文件上传到 liunx 当中 (如果您的 Linux 系统没有安装, 在终端输入:
sudo apt-get install lrzsz 进行自动安装), 图中所示, 刚才所发布的文件, 全部上传到了 liunx 系统上的 Web 文件夹当中
- sudo apt-get install lrzsz
- sudo rz
3.6 build 镜像
在 build 的时候注意, 命令最后一定要有个 ".", 并且镜像名称也不允许出现大写, 如果想带上版本号的话 可以输入命令:
sudo docker build -t Web:v0.1 .
, 如果不输入默认显示 tag 的 latest
build 之后就可以查看镜像列表: sudo docker images, 下图中 Web 就是我们刚才所生成的镜像文件:
sudo docker images
3.7 运行 build 的镜像
- sudo docker run -d -t -p 5000:80 Web #运行镜像
- sudo docker ps #查看正在运行的容器
- sudo docker ps -a #查看所有容器信息
3.8 测试可正常访问
4. 小结
在整个发布流程中涉及一些需要提前准备的例如 docker 环境, Linux 系统等还请自行配置.
来源: https://www.2cto.com/kf/201904/805016.html