1、将发布后的项目上传到linux服务器指定目录中
2、编写Dockerfile文件
vim Dockerfile
FROM microsoft/dotnet:latest
WORKDIR /root
# Copy the app file to root
COPY publish /root/
# Configure the listening port to 80 端口
EXPOSE 80/tcp
# Start the app 宿主名称 SMSService
ENTRYPOINT ["dotnet", "OutsideInter.dll"]
#设置容器的时区
RUN /bin/cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime && echo 'Asia/Shanghai' >/etc/timezone
3、构建镜像和容器
docker build -t dotnetapi .
在Dockerfile的目录下,执行 docker build -t dotnetapi . (注意包含 . ) ,构建出一个包含web程序所有内容的dotnetapi容器。
注意点:
1:docker build -t dotnetapi . 最后的 点 . 这个前面一定要有空格
2:Dockerfile 文件vim 修改是,注意 前面的首先字母是大写D, Linux区分带小写
3:docker build -t dotnetapi . 该命令必须是跟 Dockerfile 文件同一级别的目录下执行操作
4:Dockerfile 文件里面有一个 COPY publish /root/ 这个需要注意 publish 是文件夹的意思,就是需要安装的包名称,这个必须一致,否则报错。但是不是必须取名字叫publish。只要文件夹名称跟配置保持一致即可。
5:docker build -t dotnetapi . 中的 dotnetapi是镜像名字,可以取跟项目相关的名字
6:docker images查看 执行成功后的镜像
运行容器
docker run --name dotnetapicontains -d -p 5002:5002 dotnetapi
--name设置容器名,-d 后台运行 -p设置容器与宿主机的端口映射 dotnetapi为镜像名
这里需要注意 :
1:-name dotnetapicontains 中的dotnetapicontains 是容器名字,可以根据项目决定
2:第一个5002 是容器里面的端口号, 第二个5002 是对外的端口号,需要注意对外的端口号 需要跟 core项目里面的代码配置的端口号一致。在如图:
3:docker run --name dotnetapicontains -d -p 5002:5002 dotnetapi 中的dotnetapi是镜像名称。就是上面操作
构建镜像时取的名称,保持一致。
操作图片如下:
这时候我们已经看到dotnetapicontains容器已经存在,5002端口也已经对外开放
4、运行测试
我们在浏览器中测试已经运行成功