목표
Ubuntu 환경에서 Docker Image를 이용하여 WordPress를 배포한다.
설치 환경
도커 설치 환경은 Ubuntu 18.04 이다.
user@ubuntu:~$ cat /etc/issue
Ubuntu 18.04.5 LTS \n \l
배포 과정
1. Docker 설치
2. wordpress, mysql image 다운로드
3. docker run을 통한 컨테이너 구성
1. Docker 설치
먼저, 패키지 인덱스 및 설치 패키지 업데이트를 수행한다.
user@ubuntu:~$ sudo apt update
user@ubuntu:~$ sudo apt-get install \
apt-transport-https \
ca-certificates \
curl \
gnupg-agent \
software-properties-common
Docker의 GPG Key를 추가한다.
user@ubuntu:~$ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
OK
Docker 설치를 위한 Repository를 추가한다.
user@ubuntu:~$ sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"
패키지 리스트 업데이트 후 docker 엔진을 설치한다.
user@ubuntu:~$ sudo apt-get update
user@ubuntu:~$ sudo apt-get install docker-ce docker-ce-cli
설치 완료 후 docker 동작 상태를 확인한다.
user@ubuntu:~$ systemctl status docker
● docker.service - Docker Application Container Engine
Loaded: loaded (/lib/systemd/system/docker.service; enabled; vendor preset: enabled)
Active: active (running) since Mon 2021-06-14 17:44:07 KST; 1min 1s ago
...
위 명령어 입력시 아래와 같은 오류가 발생했을 경우엔 sudo service docker start 명령어를 입력해준다.
System has not been booted with systemd as init system (PID 1). Can't operate.
Failed to connect to bus: Host is down
docker는 기본적으로 root 권한으로 실행되기 때문에 user로 사용할 땐 sudo를 항상 붙여줘야 한다.
간편하게 사용하기 위해선 user 사용자에 docker 그룹을 추가하여 사용한다.
user@ubuntu:~$ sudo usermod -aG docker user
그룹을 추가해준 후엔 sudo service docker restart 명령어를 통해 docker 서비스를 재시작 시켜준다.
+++
마지막으로 재부팅이나 로그아웃을 한 후에 docker 명령어를 정상적으로 사용할 수 있다.
2. WordPress, MySQL Image 설치
docker pull 명령어를 통해 wordpress 이미지를 설치한다.
user@ubuntu:~$ docker pull wordpress
동일한 과정으로 mysql 이미지를 설치해준다.
이 포스팅에선 최신 8.0 버전보다 안정적인 5.7 버전을 사용한다.
user@ubuntu:~$ docker pull mysql:5.7
3. Container 만들기
Mysql 환경 변수
- MYSQL_DATABASE
- MYSQL_USER
- MYSQL_PASSWORD
Wordpress 환경 변수
- WORDPRESS_DB_HOST
- WORDPRESS_DB_USER
- WORDPRESS_DB_PASSWORD
- WORDPRESS_DB_NAME
컨테이너 생성 시 위 환경 변수를 참고한다.
아래 명령어를 이용하여 WordPress Container를 생성한다.
여기서 포트는 임의로 8080으로 지정해주었고, username과 password 또한 임의로 설정해주도록 한다.
user@ubuntu:~$ docker run -d -p 8080:80 --name wp --link wpdb:wpdb -e WORDPRESS_DB_HOST=wpdb -e WORDPRESS_DB_USER=wpuser -e WORDPRESS_DB_PASSWORD=wppass -e WORDPRESS_DB_NAME=wpdb -v /var/www/html wordpress
MySQL Container를 생성해준다.
WordPress와 마찬가지로 DB의 username, password 등의 값은 임의로 설정해준다.
user@ubuntu:~$ docker run -d --name wpdb -e MYSQL_ROOT_PASSWORD=toor -e MYSQL_DATABASE=wpdb -e MYSQL_USER=wpuser -e MYSQL_PASSWORD=wppass -v /var/lib/mysql mysql:5.7
생성된 컨테이너를 확인한다.
user@ubuntu:~$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
323eae8ce972 wordpress "docker-entrypoint.s…" 2 minutes ago Up 2 minutes 0.0.0.0:8080->80/tcp, :::8080->80/tcp wp
a99a4ebeac8e mysql:5.7 "docker-entrypoint.s…" 5 minutes ago Up 5 minutes 3306/tcp, 33060/tcp wpdb
결과
[로컬 IP]:8080으로 접속하면 WordPress 설치 페이지가 나오는 것을 확인할 수 있다.
'Docker' 카테고리의 다른 글
Docker Hub에 내 이미지 업로드하기 (0) | 2021.07.30 |
---|