Skip to main content

猪跑上码头

Contra | Tue, 03/28/2017 - 08:58

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

drupal

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

    • 用sudo权限的user登入
    • 检查一下是否安装了curl

      $ which curl
      
    • *如果没有安装:

      $ sudo apt-get update
      
      $ sudo apt-get install curl
      
    • 获取最新的docker包

      $ curl -fsSL https://get.docker.com/ | sh
      

      鉴于跨国网速,大约需要一二十分钟不等。

    • 将当前系统用户加入docker用户组

      只有 root 用户和 docker 组的用户才可以访问 Docker 引擎的 Unix socket。

      $ sudo groupadd docker
      
      $ sudo usermod -aG docker $USER
      
  3. 安装docker-compose

    Install Docker Compose (Define and run multi-container applications with Docker.)

    $ curl -L https://github.com/docker/compose/releases/download/1.11.2/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose
    

    然后设置执行权限:

    $ chmod +x /usr/local/bin/docker-compose
    

    如果遇到curl权限问题,可先 sudo -i 切换root,装完后再 exit 切回。

  4. 配置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=https://mirror.ccs.tencentyun.com
    EOF
    
    sudo systemctl daemon-reload
    sudo systemctl restart docker
    
  5. 安装docker4drupal容器组

    docker4drupal 是一组专为drupal而优化的容器,包含:

    drupal
    • 下载docker4drupaldocker-compose文件,放入drupal工程根目录里(包含index.php的目录)
      $ cd ~
      $ git clone XXXX/drupal_project
      $ cd drupal_project/
      $ wget https://raw.githubusercontent.com/wodby/docker4drupal/master/docker-compose.yml
      
    • 配置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命令。

      安装完成后会自动启动各容器,浏览器访问http://xxx.xxx.xxx.xxx:8000 ,会看到drupal页面。

      如果尚未创建drupal工程,则会得到 404 page not found 页面。下一步接着安装drupal。

  6. 全新安装drupal

    进入php容器里,使用 drupal composer 来安装。(安装在php容器中的同步volumes里。)

    • 进入php容器

      $ docker-compose exec php sh
      
    • 设置composer国内镜像

       
      $ composer config -g repo.packagist composer https://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 启动各容器服务。

      在浏览器里访问时,看到久违的猪跑安装页面:

      drupal

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

谢谢阅读。

drupal

 

猪跑配图由

@花婶儿

倾情原创。

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

微信公众号:浮生开方

Leave a Comment