记录一下docker 部署前端的方法。
按常规的方法拉取nginx镜像,我用的是nginx1.12.1,直接用的原生镜像。。。
然后把前端发布好的代码上传到服务器。
接着生成并且nginx运行容器。
docker run --name hnnginx -p 5121:80 -v /HNDataCentorDist/dist/:/HNDataCentorDist/dist/ -v /HNDataCentorDist/config/default.conf:/etc/nginx/conf.d/default.conf -v /HNDataCentorDist/log/:/var/log/nginx/ -d nginx:1.12.1
命令解释:
-v /HNDataCentorDist/dist/:/HNDataCentorDist/dist/ /HNDataCentorDist/dist/是上传前端发布文件的文件夹,-v · 是把这个文件夹挂载到容器内部。
-v /HNDataCentorDist/config/default.conf:/etc/nginx/conf.d/default.conf 因为用的是原生镜像,所以default.conf可以直接挂载到nginx容器中
下面把default.config的配置贴出来
server {
listen 80; #监听的端口
server_name localhost; #服务器地址
#charset koi8-r;
#access_log /var/log/nginx/host.access.log main;
location / {
try_files $uri $uri/ /index.html;
#root /usr/share/nginx/html;
root /HNDataCentorDist/dist; #前端文件目录(要跟你挂载的前端目录一致)
index index.html index.htm;
}
#error_page 404 /404.html;
# redirect server error pages to the static page /50x.html
#
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/share/nginx/html;
}
location /api {
proxy_pass http://172.17.0.82:9198; #后台端口的地址
}
#文件下载路径
location /download {
add_header Content-Type "application/octet-stream";
if ( $args ~ ^filename=(.*) ) {
add_header Content-Disposition "attachment; filename=$1";
}
alias /HNDataCentorDist/template;
autoindex on;
}
docker默认的对外端口是80,一开始的时候设置的监听是别的端口,但是这个端口一直无法对外访问,无奈之下改回80端口才可以,至于具体原因暂时没有时间研究。
然后就是后台端口的地址,后台程序是另外一个容器。这个端口的地址就设置为后台容器的地址和端口