Drupal Docker: 최초 실행 스크립트

Drupal Docker: 최초 실행 스크립트

2022-10-13 last update

7 minutes reading docker drupal
이것은 Docker Desktop and the VS Code devcontainer functionality를 사용하여 Drupal 개발 환경을 설정하는 방법을 설명하는 미니 시리즈로 계속됩니다. . 전체 코드는 my GitHub .

이 게시물에서는 컨테이너의 초기 생성 시 실행되는 구성 스크립트를 살펴봅니다. the GitPod.yml file와 대략적으로 동일한 Drupal 관련 기능의 대부분을 처리합니다. the GitPod series .

이것은 컨테이너가 처음 빌드되면 실행되는 bash 스크립트이므로 bash 스크립트로 정의하여 시작하십시오.

#!/bin/bash


git SSH 연결이 작동하는 데 필요한 SSH 키에 대한 권한을 적용합니다.

sudo chown -R drupal:drupal /home/drupal/.ssh
chmod -R 700 ~/.ssh


drupal 사용자에게 전체 웹 루트의 소유권을 제공합니다.

sudo chown -R drupal:apache /var/www/html


코드베이스로 이동:

cd /var/www/html/local.drupal.com


호스트 파일에 로컬 도메인 추가(pa11y가 사이트를 탐색할 수 있는 것과 같은 도구에 유용):

if [ ! -z $(grep "127.0.0.1 local.drupal.com" /etc/hosts) ]; then
  echo "127.0.0.1 local.drupal.com" >> /etc/hosts
fi


데이터베이스를 생성하고 drupal 사용자에게 모든 권한을 부여합니다. 이 경우 즉시 사용 가능한 기능 시스템을 공유하고 싶기 때문에 스크립트에 명시적으로 넣습니다. 실제 사이트에서 이 작업을 수행하려는 경우 컴퓨터의 Docker와 달리 다른 사람이 액세스할 수 있는 서버에서 동일한 암호를 사용하고 있지 않은지 확인하십시오. 또한 "root"보다 강력한 암호여야 합니다.

mysql --host="db" -e "CREATE DATABASE IF NOT EXISTS drupal;" -u root --password="root"
mysql --host="db" -e "GRANT ALL PRIVILEGES ON drupal.* TO 'drupal'@'%';" -u root --password="root"


작곡가에서 사이트의 기여 코드 기반을 설치합니다.

composer install


더 쉽게 사용할 수 있도록 PATH에 drush 별칭을 추가합니다.

echo "alias drush=\"/var/www/html/local.drupal.com/vendor/drush/drush/drush\"" >> ~/.bashrc


Drupal 구성 파일을 복사합니다.

if [[ -f ./.devcontainer/conf/drupal.settings.php ]]
then
  sudo cp .devcontainer/conf/drupal.settings.php web/sites/default/settings.php
fi
if [[ -f ./.devcontainer/conf/local.services.yml ]]
then
  sudo cp .devcontainer/conf/local.services.yml web/sites/local.services.yml
fi
if [[ ! -d private ]]
then
  mkdir private
  chmod 755 private
fi
if [[ ! -d sync/config ]]
then
  mkdir -p sync/config
fi


기존 구성을 가져옵니다. 기존 구성에서 새 사이트를 빌드하는 drush 명령이 있지만 이 컨텍스트에서는 안정적으로 작동하지 않았습니다.

vendor/drush/drush/drush site-install -y minimal
vendor/drush/drush/drush cset -y system.site uuid "3d9878de-3355-4510-af4d-575deb24055f"
vendor/drush/drush/drush config-import -y


생성된 이미지를 플러시하여 미디어 형식 변경을 포함하여 지난 시간 이후 구성이 변경된 경우 도움이 됩니다. the content_sync module를 사용하지 않을 때는 실제로 필요하지 않습니다. , 이 데모가 없으면 재생성할 이미지가 없기 때문에 더 이상 이 데모에 포함되지 않습니다. 그러나 나는 그것이 어떻게 작동하는지 보여주기 위해 어쨌든 이미지를 플러시하게 유지했습니다.

vendor/drush/drush/drush image-flush --all


관리자 비밀번호를 설정합니다. 위의 MySQL 암호와 동일한 참고 사항이 적용됩니다.

vendor/drush/drush/drush user:password admin "ZNB*[email protected]"


노드 액세스 캐시를 다시 작성하십시오. 이것은 큰 문제는 아니지만 Drupal에 나타나는 경고를 지우는 것을 저장합니다.

vendor/drush/drush/drush php-eval 'node_access_rebuild();'


environment indicator . 사이트 툴바와 파비콘을 다양한 색상으로 보여주는 Drupal 모듈입니다. Docker 대 개발 대 준비 대 프로덕션에 있을 때 두뇌에 시각적 신호를 보내는 것은 매우 유용합니다. 이것이 작동하려면 composer.json 파일에 환경 표시기 모듈을 포함해야 합니다.

vendor/drush/drush/drush cset -y environment_indicator.indicator name "Local Docker"
vendor/drush/drush/drush cset -y environment_indicator.indicator fg_color "#ffffff"
vendor/drush/drush/drush cset -y environment_indicator.indicator bg_color "#000000"


마지막으로 가장 중요한 캐시 지우기:

vendor/drush/drush/drush cr