Docker 环境安装 Drupal 8

记录一次无比曲折的docker环境安装drupal8的过程。目前从网上搜到的例子都是很复杂的,并且直接将drupal映射到volumes,我想要安装简单的纯drupal环境,并且可以在本地随时编辑drupal文件。

需要的环境

  1. docker
  2. docker-compose

1. 创建docker-compose.yml配置文件

# docker-compose.yml
version: "3"

services:
  web:
    image: nginx:$NGINX_TAG
    container_name: "${PROJECT_NAME}_nginx"
    ports:
      - $NGINX_PORT
    volumes:
      - "./drupal/web:/var/www/html"
      - "./drupal/nginx.conf:/etc/nginx/conf.d/default.conf"    
    depends_on:
      - php 

  php:
    image: drupal:$DRUPAL_TAG
    container_name: "${PROJECT_NAME}_drupal"
    volumes:
      - "./drupal/web:/var/www/html"
    restart: always
    depends_on:
      - mysql

  mysql:
      image: mysql:$MYSQL_TAG
      container_name: "${PROJECT_NAME}_mysql"
      command: mysqld --default-authentication-plugin=mysql_native_password
      environment:
        MYSQL_ROOT_PASSWORD: $DB_ROOT_PASSWORD
        MYSQL_USER: $DB_USER
        MYSQL_PASSWORD: $DB_PASSWORD
        MYSQL_DATABASE: $DB_NAME
      volumes:
        - "./drupal/mysql:/var/lib/mysql"
      ports:
        - $DB_PORT
      restart: always

2. 创建.env文件

# .env
PROJECT_NAME=drupal8
DRUPAL_VERSION=8.8.3
DRUPAL_TAG=8.8-fpm-alpine
NGINX_TAG=alpine
NGINX_PORT=8080:80

###  database ###
MYSQL_TAG=8
DB_NAME=drupal
DB_USER=admin
DB_PASSWORD=admin
DB_ROOT_PASSWORD=root
DB_PORT=33060:3306

3. 下载drupal8安装文件

正常情况下上面的drupal8 container会下载安装文件并放到对应的文件夹里,但是有时候会下载出错或者并没有下载文件,所以创建我们可以手动下载drupal并放到对应的目录下。
大家可以到Drupal官网下载,也可以通过执行下面到文件下载。

# drupal-install.sh
#! /bin/bash
[[ -f .env ]] && source .env
if [ $DRUPAL_VERSION ]
then 
    echo "Start with Drupal version ${DRUPAL_VERSION}"
else
    echo "Drupal version is not defined. Set the default version to 8.6.12"
    DRUPAL_VERSION='8.6.12'
fi
mkdir drupal/web
curl -fSL "https://ftp.drupal.org/files/projects/drupal-${DRUPAL_VERSION}.tar.gz" -o drupal.tar.gz
mv drupal.tar.gz drupal/web
cd drupal/web
tar -zx --strip-components=1 -f drupal.tar.gz
rm drupal.tar.gz

启动docker之前先执行上面的文件sh docker-install.sh下载drupal

4. 启动docker

上面的文件都写好了之后,就可以启动docker了

docker-compose up

image.png

启动成功之后可以通过 http://localhost:8080 访问drupal站点了。安装drupal连接数据库的时候,host 填写mysql,port填写3306。

5. 问题记录

mysql 8连接的问题

mysql 8 修改了密码连接方式,所以我在用navicat连接mysql的时候总是在出错,然后在docker-compose.yml里的mysql下添加了一句命令修改密码验证方式command: mysqld --default-authentication-plugin=mysql_native_password

image.png

参考文章和网址

drupal:https://hub.docker.com/_/drupal
mysql:https://hub.docker.com/_/mysql
Local Drupal 8 Development with Docker
Local environment with Docker4Drupal

你可能感兴趣的:(Docker 环境安装 Drupal 8)