浮生开方
首发于浮生开方
猪跑上码头

猪跑上码头

本文讲述如何搭建docker上的drupal开发环境,让猪跑上码头。


  1. 安装ubuntu 16.04 64位,本文使用 qcloud
  2. 按官方指引安装docker Example: Install Docker on Ubuntu Linux


  1. 安装docker-compose
    Install Docker Compose (Define and run multi-container applications with Docker.)
    $ curl -L github.com/docker/compo`uname -s`-`uname -m` > /usr/local/bin/docker-compose

    然后设置执行权限:
    $ chmod +x /usr/local/bin/docker-compose
    如果遇到curl权限问题,可先 sudo -i 切换root,装完后再 exit 切回。
  2. 配置docker国内镜像
    鉴于跨国网速。
    如何使用Docker官方镜像加速器 - 容器服务 - 产品文档 - 帮助与文档 - 腾讯云
    对于系统是 ubuntu 15.04 16.04,Docker 1.9 以上:

    sudo mkdir -p /etc/systemd/system/docker.service.d
    sudo tee /etc/systemd/system/docker.service.d/mirror.conf <<-'EOF'
    [Service]
    ExecStart=
    ExecStart=/usr/bin/docker daemon -H fd:// --registry-mirror=mirror.ccs.tencentyun.com
    EOF

    sudo systemctl daemon-reload
    sudo systemctl restart docker
  3. 安装docker4drupal容器组
    docker4drupal 是一组专为drupal而优化的容器,包含:
    • 下载docker4drupaldocker-compose文件,放入drupal工程根目录里(包含index.php的目录)
      $ cd ~
      $ git clone XXXX/drupal_project
      $ cd drupal_project/
      $ wget raw.githubusercontent.com
    • 配置docker-compose.yml文件
      $ sudo vim docker-compose.yml
      这里使用默认配置,即 mariadb 10.1,php 7.0,drupal 8,nginx 1.10,redis 3.2 等。
      默认把当前目录 ./ 分别映射到php和nginx两个容器的 /var/www/html

      php:
      ··image: wodby/drupal-php:7.0-2.0.0
      ··environment:
      ······PHP_SENDMAIL_PATH: /usr/sbin/sendmail -t -i -S mailhog:1025
      ··volumes:
      ······- ./:/var/www/html

      nginx:
      ··image: wodby/drupal-nginx:8-1.10-2.0.0
      ··environment:
      ······NGINX_BACKEND_HOST: php
      ······NGINX_SERVER_ROOT: /var/www/html/
      ··volumes:
      ······- ./:/var/www/html
    • *如果是全新创建drupal工程,可以先创建一个目录如drupal_docker,放入docker-compose.yml,使用默认配置。
    • 安装并启动各个容器
      $ docker-compose up -d
      安装过程中有时会出现无响应的情况,可能是网络失去连接,可确认设置了国内镜像,再重新执行up命令。
      安装完成后会自动启动各容器,浏览器访问xxx.xxx.xxx.xxx:8000 ,会看到drupal页面。
      如果尚未创建drupal工程,则会得到 404 page not found 页面。下一步接着安装drupal。


  1. 全新安装drupal
    进入php容器里,使用 drupal composer 来安装。(安装在php容器中的同步volumes里。)
  • 进入php容器
    $ docker-compose exec php sh
  • 设置composer国内镜像

    $ composer config -g repo.packagist composer packagist.phpcomposer.com
  • 安装drupal
    /var/www/html/ 下执行:

    $ composer create-project drupal-composer/drupal-project:8.x-dev d8 --verbose --stability dev --no-interaction
    装好后,$ exit 退出php容器,在原始系统里可以看到之前建的目录 drupal_docker 下,有了 d8 目录,因为 drupal_docker与php容器里的 /var/www/html 同步
  • 重新调整docker4drupal的 docker-compose.yml 文件
    上文把drupal装在了与 docker-compose.yml 同级的目录 d8 里;并且 drupal-composer 安装后的drupal工程,含有 index.php 的网站部分不是在工程根目录,而是放在 web 目录下。
    所以,需要把nginx的doc目录由 /var/www/html 改为/var/www/html/d8/web
    对新版docker4drupal(2.0),设置 NGINX_SERVER_ROOT
    nginx:
    ··image: wodby/drupal-nginx:8-1.10-2.0.0
    ··environment:
    ····NGINX_BACKEND_HOST: php
    ····NGINX_SERVER_ROOT: /var/www/html/d8/web

    我使用2.0版一直未能serve成功,改用1.0版可以,20170317
    对旧版docker4drupal(1.0),设置 NGINX_DOCROOT

    nginx:
    ··image: wodby/drupal-nginx:1.10-1.1.0
    ··environment:
    ····NGINX_SERVER_NAME: drupal
    ····NGINX_UPSTREAM_NAME: php
    ····NGINX_DOCROOT: d8/web # 相对路径
    1.0版的完整 docker-compose.yml 文件,参见这里
    设置好 docker-compose.yml 后,执行 docker-compose up -d 启动各容器服务。
    在浏览器里访问时,看到久违的猪跑安装页面:



至此,猪终于跑上码头了。

谢谢阅读。


猪跑配图由@花婶儿 倾情原创。

----------------
不要慌,真猪跑在码头上是不会慌的。

微信公众号:浮生开方
floatbug.com/contra

编辑于 2019-01-21

文章被以下专栏收录