Docker部署netcore网站,并使用Docker nginx 作为正向代理;
创建测试项目后,修改网站监听端口,具体设置方式请查阅另一篇博文《Ubuntu部署Asp.net core网站无法访问》
上传publish文件到Linux,创建文件Dockerfile,编辑内容为:
1 2 3 4 5 FROM mcr.microsoft.com/dotnet/core/aspnet //从该镜像拉取 WORKDIR /app //工作目录 COPY . . EXPOSE 80 //容器对外开放端口 CMD ["dotnet" , "website.dll" ] //执行命令
把网站打包成镜像
1 docker build -t website .
创建并运行容器
1 docker run --name website -p 8080:80 -d website
至此,网站已成功发布。使用ip:port即可访问网站。
接下来使用docker拉取nginx
在创建nginx容器前先创建好挂载目录
1 2 3 4 cd varmkdir nginxcd nginxmkdir www conf logs
进入conf文件夹,创建并编辑nginx.conf配置文件
nginx.conf文件内容
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 user nginx; worker_processes auto; error_log /var/log/nginx/error.log; pid /run/nginx.pid; include /usr/share/nginx/modules/*.conf; events { worker_connections 1024; } http { log_format main '$http_host $server_addr $remote_addr [$time_local] "$request" $status $request_body $body_bytes_sent "$http_referer" "$http_user_agent" $request_time $upstream_response_time' ; access_log /var/log/nginx/access.log main; sendfile on; tcp_nopush on; tcp_nodelay on; keepalive_timeout 65; types_hash_max_size 2048; include /etc/nginx/mime.types; default_type application/octet-stream; include /etc/nginx/conf.d/*.conf; server { listen 80 default_server; listen [::]:80 default_server; server_name _; include /etc/nginx/default.d/*.conf; location / { proxy_pass http://ip:8080; } error_page 404 /404.html; location = /40x.html { } error_page 500 502 503 504 /50x.html; location = /50x.html { } } }
创建并运行容器
1 docker run -d -p 80:80 --name blog -v $PWD /www:/usr/share/nginx/html -v $PWD /conf/nginx.conf:/etc/nginx/nginx.conf -v $PWD /logs:/var/log/nginx nginx
Nginx部署完成,此刻直接输入ip可直接访问网站。