加入收藏 | 设为首页 | 会员中心 | 我要投稿 核心网 (https://www.hxwgxz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 建站 > 正文

写给前端的Docker实战教程

发布时间:2019-09-27 22:04:18 所属栏目:建站 来源:花生PeA
导读:本篇文章详细而又简短的介绍了:一名完全不了解 Docker 前端程序员,将全站 Docker 化的过程。内容主要包含: Docker 基本概念 真实站点迁移过程: 静态站点 Nodejs 站点(Express) WordPress(PHP) 一些必备技巧:开机启动、常用Shell 文章会讲解使用 Docke

docker-compose 会帮我们自动去拉镜像,创建容器,将容器中的80端口映射为宿主机的8082端口。restart字段还要求 docker-compose 当发现容器意外挂掉时重新启动容器,类似于 pm2,所以你不必再在容器内使用 pm2

如果想要更新一个镜像创建新容器,只需要:

  1. docker-compose pull info 
  2. docker-compose stop info 
  3. docker-compose rm info 
  4. docker-compose up -d info # -d 代表后台运行 

笔者已将自己网站部署方式开源,可参考github/pea3nut-hub

迁移 WordPress 站点(Apache + PHP + MySQL)

接下来我们实战迁移一个 WordPress 站点

  • 网址:pea3nut.blog
  • 源码:非公开

可能你也发现了这个站点和其他站点的一个非常大的不同——他的源码和数据是不能公开的

之前我们打包镜像时,都是直接将代码打进镜像内的。这条方案用在这里显然是不行的,有两个问题:

  1. 我不想公开 MySQL 数据文件和网站内容(如图片)。若将这些打包进镜像,任何人都能docker image pull下载到镜像,然后取得镜像内的文件
  2. 当容器被删掉,存储的 MySQL 数据都将丢失

Volume

Docker 提供了一个叫做 Volume 的东西,可以将容器内和宿主机的某个文件夹进行”绑定“,任何文件改动都会得到同步。所以,我可以将整个站点目录和 MySQL 目录都挂载为 Volume。这样,当容器删除时,所有数据文件和源码都会保留。

在本地建立./blog/mysql-data目录存储 MySQL 数据,建立./blog/wordpress目录存储 WordPress 源码。然后修改docker-compose.yml如下:

  1. version: "3.7" 
  2. services: 
  3.     info: 
  4.         container_name: pea3nut-info 
  5.         image: pea3nut/pea3nut-info:latest 
  6.         ports: 
  7.             - "8082:80" 
  8.         restart: on-failure 
  9. +   blog: 
  10. +       container_name: pea3nut-blog 
  11. +       image: tutum/lamp:latest 
  12. +       ports: 
  13. +           - "8081:80" 
  14. +       volumes: 
  15. +           - ./blog/mysql-data:/var/lib/mysql 
  16. +           - ./blog/wordpress:/app 
  17. +       restart: on-failure 

可以看到这次根本没有打包镜像,而是直接使用tutum/lamp镜像提供的 LAMP 环境(Linux + Apache + MySQL + PHP),然后将 MySQL 数据目录/var/lib/mysql和源码目录/app都挂载出来就可以了

Tips: 通过 Volume 我们只是解决了部署问题,而如何本地开发然后将源码同步到服务器呢?用 FTP 当然是可以的,但是稍微有点麻烦。其实你可以自建一个 Git 服务器!详见:pea3nut.blog/e127

吭和其他技巧

  • 设置开机启动:Ubuntu 18.04 启用 rc.local 设置开机启动 - digdeep - 博客园
  • 迁移后中文文件乱码:解决linux下中文文件名显示乱码问题

(编辑:核心网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

热点阅读