Drupal GitPod 컨테이너 1: .Dockerfile

Drupal GitPod 컨테이너 1: .Dockerfile

2022-10-13 last update

5 minutes reading docker drupal devops gitpod
GitPod는 개발할 때 클라우드 기반 컨테이너를 위한 훌륭한 도구입니다. 개발 중이고 안전하고 효율적인 클라우드 컨테이너를 사용해 실험을 해보고 싶다면 꽤 좋은 방법입니다. 한 달에 50시간을 무료로 사용할 수도 있습니다. 이는 풀타임 작업이 아닌 비정기적인 사이드 프로젝트만 필요한 경우에 매우 좋습니다. 최근에는 작동하지 않았지만 브라우저와도 작동하므로 브라우저나 데스크탑 편집기에서 사용할 수 있습니다. 확장 프로그램이 설치된 GitHub 또는 GitLab 리포지토리를 탐색하면 해당 리포지토리의 코드로 컨테이너를 시작하는 간단한 버튼이 있어 빠르고 쉽게 작동 방식을 확인하고 변경할 수 있습니다.

여기서는 GitPod와 함께 작동하는 일반적인 Drupal 친화적 컨테이너를 생성한 방법을 설명합니다. It is available in my GitHub . 이것은 시간이 지나면서 계속 사용할 수 있는 일부 코드이므로 이 문서에서 다루는 것 이상으로 코드가 변경될 수 있습니다.

도커파일



이 솔루션은 the GitPod-provided MySQL image 에서 시작합니다. 작동하는 Drupal 사이트에 필요한 모든 것을 제공하지는 않지만 LAMP 스택의 기본 사항을 충족합니다.

FROM gitpod/workspace-mysql


이 이미지를 사용할 때 가장 큰 문제는 최신 PHP 버전으로 끝날 수 있으며 Drupal 사이트에서 아직 지원하지 않을 가능성이 높다는 것입니다. 따라서 현재 작동하는 PHP로 변경하는 섹션을 추가하고 싶을 것입니다.

RUN update-alternatives --set php /usr/bin/php8.0


하지만 모든 것을 다루지는 않습니다. Drupal 9+ 사이트마다 원하는 것이 몇 가지 더 있습니다.

PHP 패키지



다음은 Ubuntu Dockerfile 내에서 필요한 PHP 패키지를 추가하는 방법과 Drupal에서 권장하는 APCU 및 uploadprogress를 추가하는 방법입니다. 나는 최근에 에 대해 썼습니다. 이는 비슷하지만 이러한 Ubuntu 명령과 약간 다릅니다.

USER root
# Install other needed packages
RUN apt update
RUN apt install -y php-pear php-apcu php-json php-xdebug build-essential mysql-client sendmail
RUN pecl install apcu
RUN pecl install uploadprogress


작곡가



Drupal은 작곡가 없이도 작동할 수 있습니다. but your life is going to be a lot easier with it . Dockerfile에 추가한 방법은 다음과 같습니다.

# Install latest composer
RUN php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"
RUN php -r "if (hash_file('sha384', 'composer-setup.php') === '906a84df04cea2aa72f40b5f787e49f22d4c2f19492ac310e8cba5b96ac8b64115ac402c8cd292b8a03482574915d1a8') { echo 'Installer verified'; } else { echo 'Installer corrupt'; unlink('composer-setup.php'); } echo PHP_EOL;"
RUN php composer-setup.php --install-dir /usr/bin --filename composer
RUN php -r "unlink('composer-setup.php');"


이 시점에서 서버는 Drupal을 잘 실행하는 핵심 패키지를 제공할 준비가 되었습니다.

Pa11y 접근성 테스트



, 접근성 테스트 도구. 나는 항상 그것을 사용할 수 있기를 원합니다. 이 Ubuntu 기반 Dockerfile에서 이를 수행하는 방법은 다음과 같습니다.

# Install pa11y accessibility testing tool, including NodeJS
RUN curl -sL https://deb.nodesource.com/setup_16.x -o # Install pa11y accessibility testing tool, including NodeJS and Chromium
RUN curl -sL https://deb.nodesource.com/setup_16.x -o nodesource_setup.sh
RUN bash nodesource_setup.sh
RUN apt-get install -y nodejs libnss3 libatk1.0-0 libatk-bridge2.0-0 libcups2 libdrm-amdgpu1 libxkbcommon-x11-0 libxcomposite-dev libxdamage-dev libxrandr-dev libgbm-dev libgtk-3-common libxshmfence-dev software-properties-common
RUN apt-get install -y apparmor snapd apparmor-profiles-extra apparmor-utils kdialog chromium-browser libappindicator1 fonts-liberation
RUN npm install pa11y -g --unsafe-perm=true --allow-root


항구



마지막으로 표준 포트인 80(HTTP), 443(HTTPS) 및 3306(MySQL)을 엽니다. 이것은 실제로 필요하지 않은 것 같지만 사용 중인 포트를 상기시키는 데 도움이 될 수 있습니다.

EXPOSE 80
EXPOSE 443
EXPOSE 3306


무엇 향후 계획



다음 게시물에서 이 작업을 수행하기 위해 다른 큰 파일인 .gitpod.yml을 계속 사용하겠습니다. 세 번째 게시물에서는 다른 구성에 적용해야 했던 몇 가지 작은 변경 사항을 다룹니다.