.netcore 部署docker
没有特殊要求 尽量别把nginx放在docker中。建议把nginx放在主机。
1.代码中新建一个dockerfile容器文件。
下面是容器代码,9527是容器的端口。
FROM mcr.microsoft.com/dotnet/aspnet:3.1 AS base WORKDIR /app EXPOSE 9527 COPY . . ENTRYPOINT ["dotnet", "myapidemo.dll"]
2.代码中program.cs需要处理一下端口。
新建个json文件:host.json
打包发布后放到centos目录下即可。
3.构建镜像,镜像发布容器。前提是安装好docker。园子里很多教程可以去搜一下。
# 进入程序的发布文件目录,这个目录是发布后的代码,存放到centos的路径
cd /home/docker_core
# 首先构建成镜像 # -t 指定镜像名(必须小写,可以冒号指定标签如webappimg) # . 表示Dockerfile所在目录(PS:注意最后的 点) docker build -t webappimg .
# 查看镜像
docker images
# 然后镜像发布为容器 # --name 指定容器名称 # -d 指定容器后台运行 # -p 主机(宿主)端口:容器端口(容器端口映射到主机(宿主)端口 ) # webappimg镜像名 docker run --name webappdocker -d -p 8899:9527 webappimg
本地就可以直接用ip+端口(8899)访问了。例如:10.100.101.129:8899/exp
简单说就是,代码(dockerfile) 本身有一个端口,比如是9527,然后在用docker构建一个镜像,转换为容器的时候,做一个映射,我不想用9527了,我想让别人通过8899这种端口访问。
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 start 容器名
# 查看镜像 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]
参考:
CentOS下使用Docker方式部署.NetCore-CSDN博客
centos 7 使用 docker 部署.net core 项目 - 温故纳新 - 博客园 (cnblogs.com)