記錄一次無(wú)比曲折的docker環(huán)境安裝drupal8的過(guò)程捌袜。目前從網(wǎng)上搜到的例子都是很復(fù)雜的说搅,并且直接將drupal映射到volumes,我想要安裝簡(jiǎn)單的純drupal環(huán)境虏等,并且可以在本地隨時(shí)編輯drupal文件弄唧。
需要的環(huán)境
- docker
- docker-compose
1. 創(chuàng)建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. 創(chuàng)建.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會(huì)下載安裝文件并放到對(duì)應(yīng)的文件夾里适肠,但是有時(shí)候會(huì)下載出錯(cuò)或者并沒(méi)有下載文件,所以創(chuàng)建我們可以手動(dòng)下載drupal并放到對(duì)應(yīng)的目錄下候引。
大家可以到Drupal官網(wǎng)下載侯养,也可以通過(guò)執(zhí)行下面到文件下載。
# 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
啟動(dòng)docker之前先執(zhí)行上面的文件sh docker-install.sh
下載drupal
4. 啟動(dòng)docker
上面的文件都寫(xiě)好了之后澄干,就可以啟動(dòng)docker了
docker-compose up
啟動(dòng)成功之后可以通過(guò) http://localhost:8080 訪問(wèn)drupal站點(diǎn)了逛揩。安裝drupal連接數(shù)據(jù)庫(kù)的時(shí)候,host 填寫(xiě)mysql傻寂,port填寫(xiě)3306息尺。
5. 問(wèn)題記錄
mysql 8連接的問(wèn)題
mysql 8 修改了密碼連接方式,所以我在用navicat連接mysql的時(shí)候總是在出錯(cuò)疾掰,然后在docker-compose.yml里的mysql下添加了一句命令修改密碼驗(yàn)證方式command: mysqld --default-authentication-plugin=mysql_native_password
參考文章和網(wǎng)址
drupal:https://hub.docker.com/_/drupal
mysql:https://hub.docker.com/_/mysql
Local Drupal 8 Development with Docker
Local environment with Docker4Drupal