当前位置:   article > 正文

使用Docker部署前端项目实战教程,该踩的坑我都帮你踩了!_前端docker容器化部署教程

前端docker容器化部署教程

每个人的前半生,都在不停地做加法。可到了后半生,我们就要学会不断地做减法。

目录

前置工作

1、需要准备的东西

2、连接云服务器

安装Docker环境 

1、安装Docker的依赖库。

2、添加Docker CE的软件源信息。

 3、安装Docker CE。

4、启动Docker服务。

准备Dockerfile并部署项目(构建新的业务镜像)

1、准备nginx.conf.template、Dockerfile、dist(前端项目build后的包)

2、部署项目

知识点(需要的可查阅)

容器命令(需要时可查)

结束语


前置工作

1、需要准备的东西

一台Centos服务器并连接

服务器详情

我这是演示用的垃圾云,建议大家上阿里云、腾讯云等。

2、连接云服务器

连接服务器看文章: https://blog.csdn.net/qq_32442973/article/details/119840447 


安装Docker环境 

Docker有两个分支版本:Docker CEDocker EE,即社区版和企业版。本教程基于CentOS 7安装Docker CE。

1、安装Docker的依赖库。

yum install -y yum-utils device-mapper-persistent-data lvm2

2、添加Docker CE的软件源信息。

docker官方源: 

sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo

 或者使用国内阿里云源(安装太慢/无法安装可以考虑用这个):

sudo yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

 出现以下内容则代表设置源成功:

docker源设置

 3、安装Docker CE。

可以查看所有仓库中所有docker版本,并选择特定版本安装

yum list docker-ce --showduplicates | sort -r

docker版本列表

下面是安装方式

  1. sudo yum install docker-ce #由于repo中默认只开启stable仓库,故这里安装的是最新稳定版 3:20.10.8-3.el7
  2. sudo yum install <FQPN> # 例如:sudo yum install docker-ce-17.12.0.ce

 我用第一种安装方式。

4、启动Docker服务。

  1. sudo systemctl start docker # 启动docker
  2. sudo systemctl enable docker # 设置开机自启

启动docker

 若不设置开机自启,那么一但服务器宕机或者重启,就得手动输命令重新启动,很麻烦。


准备Dockerfile并部署项目(构建新的业务镜像)

1、准备nginx.conf.template、Dockerfile、dist(前端项目build后的包)

为了方便管理我们统一放在目录frontend-docker下,以下代码段为步骤:

  1. # 第一步
  2. cd /
  3. # 第二步 创建文件夹
  4. mkdir frontend-docker
  5. # 第三步
  6. cd frontend-docker
  7. # 第四步 创建nginx.conf.template并编辑好保存
  8. vi nginx.conf.template #打开编辑贴上下面的文件内容再按 esc 然后 : wq保存
  9. # 第五步 创建Dockerfile文件并编辑好保存
  10. vi Dockerfile #打开编辑贴上下面的文件内容再按 esc 然后 : wq保存
  11. # 第五步 上传vue项目build后的dist文件夹

nginx.conf.template 文件内容

  1. user nginx;
  2. #user nobody;
  3. worker_processes 1;
  4. #error_log logs/error.log;
  5. #error_log logs/error.log notice;
  6. #error_log logs/error.log info;
  7. #pid logs/nginx.pid;
  8. events {
  9. worker_connections 1024;
  10. }
  11. http {
  12. include mime.types;
  13. default_type application/octet-stream;
  14. #log_format main '$remote_addr - $remote_user [$time_local] "$request" '
  15. # '$status $body_bytes_sent "$http_referer" '
  16. # '"$http_user_agent" "$http_x_forwarded_for"';
  17. #access_log logs/access.log main;
  18. sendfile on;
  19. #tcp_nopush on;
  20. #keepalive_timeout 0;
  21. keepalive_timeout 65;
  22. #gzip on;
  23. server {
  24. listen 80;
  25. server_name localhost;
  26. #charset koi8-r;
  27. #access_log logs/host.access.log main;
  28. location / {
  29. root /dist;
  30. #try_files $uri /index.html; #解决路由重定向跳转 404 页面配置
  31. index index.html index.htm;
  32. }
  33. #error_page 404 /404.html;
  34. # redirect server error pages to the static page /50x.html
  35. #
  36. error_page 500 502 503 504 /50x.html;
  37. location = /50x.html {
  38. root html;
  39. }
  40. }
  41. # another virtual host using mix of IP-, name-, and port-based configuration
  42. #
  43. #server {
  44. # listen 8000;
  45. # listen somename:8080;
  46. # server_name somename alias another.alias;
  47. # location / {
  48. # root html;
  49. # index index.html index.htm;
  50. # }
  51. #}
  52. # HTTPS server
  53. #
  54. #server {
  55. # listen 443 ssl;
  56. # server_name localhost;
  57. # ssl_certificate cert.pem;
  58. # ssl_certificate_key cert.key;
  59. # ssl_session_cache shared:SSL:1m;
  60. # ssl_session_timeout 5m;
  61. # ssl_ciphers HIGH:!aNULL:!MD5;
  62. # ssl_prefer_server_ciphers on;
  63. # location / {
  64. # root html;
  65. # index index.html index.htm;
  66. # }
  67. #}
  68. }

Dockerfile文件内容 (业务镜像构建流程

  1. FROM nginx:latest
  2. RUN mkdir /dist
  3. COPY ./dist /dist
  4. COPY ./nginx.conf.template /
  5. CMD envsubst < /nginx.conf.template > /etc/nginx/nginx.conf \
  6. && cat /etc/nginx/nginx.conf \
  7. && nginx -g 'daemon off;'

 该文件里主要是安装了nginx,复制dist、nginx.conf.template、启动nginx的步骤。

 注意:你复制粘贴时可能会无意丢掉头部几个单词,注意检查文件内容是否一致。

2、部署项目

上面的东西准备好后我们进入上面保存那三个文件的目录frontend-docker,已经在该目录的请忽略。

  1. cd /
  2. cd frontend-docker
  3. #已经在frontend-docker目录就不用执行这两条命令

构建镜像 

  1. docker build -f Dockerfile -t my-frontend:v1.0 .
  2. #注意最后那个点是必须的,代表当前目录

成功如下: 

构建镜像成功

设置容器运行镜像

  1. docker run -d --name nginx01 -p 3000:80 --restart=always my-frontend:v1.0
  2. # -后台运行
  3. # --name nginx01 设置容器名字叫nginx01
  4. # -p 3000:80 公网ip的3000端口对应该容器的80端口
  5. # --restart=always设置了开机自启
  6. # my-frontend:v1.0 构建的镜像的名字

命令执行

最后浏览器公网ip:3000就可以打开了,若打开提示无法访问此网站请输入:

  1. docker logs nginx01
  2. #有报错信息的根据提示修改即可,一般多为前面my-frontend文件夹下的文件内容粘贴少了打头的几个字母

docker镜像运行成功

最后,上面的表示该vue项目已经成功部署! 经过验证重启服务器后仍旧可以正常打开! 

这里有一点提个醒,部分浏览器会禁用一些端口,例如谷歌禁用6666,如果出现下文的情况,请docker run的时候更换端口 !

无法访问此网站

网址为 http://106.126.3.4:6666/ 的网页可能暂时无法连接,或者它已永久性地移动到了新网址。


知识点(需要的可查阅)

容器命令(需要时可查)

常规命令

  1. docker pull **** #下载最新的****
  2. //新建容器运行
  3. docker run [可选参数] imageid
  4. #参数说明
  5. -d # 后台方式运行
  6. --name # 容器名称 用来区分容器,例如nginx01
  7. --restart=always #开机自启
  8. #下方为端口组合
  9. -p # 随机指定端口
  10. -p 主机端口:容器端口(常用)
  11. -p ip:主机端口容器端口
  12. -p 容器端口
  13. 容器的端口
  14. -P
  15. #详见菜鸟教程 or w3c

容器退出删除命令

  1. exit #容器退出
  2. Ctrl+P+Q #不停止推出
  3. docker rm 容器id # 删除指定的容器 不能删除正在运行的
  4. docker rm -f $(docker ps -aq) # 删除所有容器
  5. docker ps -a -q | xargs docker rm # 删除所有容器

启动、停止容器命令

  1. docker start 容器id
  2. docker restart 容器id
  3. docker stop 容器id
  4. docker kill 容器id

更多详细的命令还请大家查阅相关资料,这里不再一一列举。


结束语

以上关于docker前端部署的实战就差不多到此了,后续会推出前端自动化部署的方案,如果小伙伴们觉得满意,还请点个关注、收藏、或者赞赞支持一下

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/盐析白兔/article/detail/180439
推荐阅读
相关标签