본문 바로가기
프로그램 활용/클라우드 가상화 도커

docker로 drupal 배포

by 3604 2023. 7. 28.
728x90
 

docker 설치

https://docs.docker.com/engine/install/ubuntu/

Docker를 ubuntu환경에 설치하는 방법은 위의 링크에 잘 나와있지만 내 나름대로 한 번 정리해 보았다.

Docker 설치하기

sudo apt update #패키지 목록 가져오기
sudo apt install -y ca-certificates curl gnupg lsb-release #설치하는 명령어
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg ###전자서명을 받아오기 위한 명령어
echo \ "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu \ $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null ### 도커 리스트
sudo apt update #설치하기전에 업데이트
sudo apt install -y docker-ce docker-ce-cli containerd.io docker-compose-plugin ###설치명령어

Docker 설치후 확인

systemctl status docker #docker 실행 확인
docker ps #해보면 오류가 남 sudo doker ps #해보면 오류가 안남 ### docker 명령어는 기본적으로 root사용자 또는 docker 그룹내의 사용자만 사용할 수 있음

Docker 그룹에 사용자 넣어주기

tail /etc/group
에서 docker라는 그룹이 같이 세팅이 되고
ps -ef | grep dockerd
하면 root에 의해서 실행되는거 확인 가능
id
vagrant사용자는 vagrant그룹에 되어있다.
sudo usermod -aG docker vagrant
vagrant 사용자를 docker그룹에 넣는것이다. 이렇게 해주고 나서
터미널을 닫았다가 열어주어야한다.
이거는 로그인할 때 변경사항이 적용되기 때문에 나갔다가 들어와야함
docker ps #정상적으로 이제 작동하는거 확인

 

drupal 설치

docker pull mysql:5.7
docker pull drupal

###mysql은 5.7버전을 받아주고 drupal은 가장 최신 버전을 받아준다.

DB전용 volume 생성

docker volume create mysql-data		#DB전용 볼륨 생성
docker volume inspect mysql-data
### 아래와 같은 결과가 출력된다.
[
    {
        "CreatedAt": "2022-05-10T13:24:39Z",
        "Driver": "local",
        "Labels": {},
        "Mountpoint": "/var/lib/docker/volumes/mysql-data/_data",
        "Name": "mysql-data",
        "Options": {},
        "Scope": "local"
    }
]

바로가기 편한 디렉토리 연결

sudo ln -s /var/lib/docker/volumes/mysql-data/_data /mysql

###데이터베이스에 접근할 수 있는 바로가기 디렉토리를 하나 연결해준다.

DB 컨테이너 실행

###생성한 볼륨을 사용하여 MySQL 컨테이너를 시작합니다.

docker run -d --name mysql-server -v mysql-data:/var/lib/mysql -e "MYSQL_ROOT_PASSWORD=dkagh1." -e MYSQL_USER=drupal -e "MYSQL_PASSWORD=dkagh1." -e "MYSQL_DATABASE=drupal" mysql:5.7

### 참고 - 외부 접속(virtualbox 사용하는 경우)
### local(포트 3307)  ---> mysql container(포트 3306)

docker run -d --name mysql-server -p 3307:3306 -v mysql-data:/var/lib/mysql -e "MYSQL_ROOT_PASSWORD=dkagh1." -e MYSQL_USER=drupal -e "MYSQL_PASSWORD=dkagh1." -e "MYSQL_DATABASE=drupal" mysql:5.7
참고) 외부 접속을 위한 설정 방법
# MySQL 컨테이너 생성

docker run --name {컨테이너 이름} -e MYSQL_ROOT_PASSWORD={루트 계정 비밀번호} -d, -p {포트포워딩} mysql

# Example
docker run --name test_mysql -e MYSQL_ROOT_PASSWORD=rootpwexample -d -p 3307:3306 mysql

drupal 데이터 저장용 볼륨 생성

docker volume create drupal-modules
docker volume create drupal-profiles
docker volume create drupal-sites
docker volume create drupal-themes

###도커 볼륨을 만들어 Drupal 영구 데이터를 저장
docker volume inspect drupal-modules
docker volume inspect drupal-profiles
docker volume inspect drupal-sites
docker volume inspect drupal-themes

###생성한 볼륨 확인
sudo mkdir /drupal
sudo ln -s /var/lib/docker/volumes/drupal-modules/_data /drupal/modules
sudo ln -s /var/lib/docker/volumes/drupal-profiles/_data /drupal/profiles
sudo ln -s /var/lib/docker/volumes/drupal-sites/_data /drupal/sites
sudo ln -s /var/lib/docker/volumes/drupal-themes/_data /drupal/themes

###선택적으로 더 쉬운 액세스 위치에 대한 기호 링크를 만듭니다.

생성한 볼륨을 사용하여 drupal 컨테이너 실행

docker run -d --name drupal -p 80:80 -v drupal-modules:/var/www/html/modules -v drupal-profiles:/var/www/html/profiles -v drupal-sites:/var/www/html/sites -v drupal-themes:/var/www/html/themes --link mysql-server:mysql -e MYSQL_USER=drupal -e "MYSQL_PASSWORD=dkagh1." drupal

배포 확인

Drupal 설치 실패시 재설치 방법
You can do it with the following steps too :

  1. Go to http://localhost/phpmyadmin
  2. Select your database and drop all the tables
  3. Go to http://yoursite.com/install.php

크롬창에 리눅스 private ip 주소를 입력해서 drupal 사이트에 접속해본다.

제거

제거할 때 루트 /에 있는 drupal과 mysql 디렉토리를 지워주는 것을 잊지말자

docker ps -a			#제거할 컨테이너 id 확인
docker rm -f 497 19b	#컨테이너 강제 삭제
docker volume prune		#사용하지 않는 볼륨 모두 삭제
docker images			#제거할 이미지 id 확인
docker rmi -f 8aa e82 	#이미지 강제 삭제
cd /					#루트 디렉토리로 이동
sudo rm -d -r drupal	#-d는 디렉토리 제거
sudo rm -d -r mysql		#-r은 디렉토리 안에 내용이 있어도 강제로 제거
 

Docker 설치하는법

docker를 설치하고 docker를 사용하기위해 사용자를 docker 그룹에 넣어주는 방법까지 알아보자

velog.io

 

 
728x90