Docker - Wordpress + mysql connect

FromCloud·2023년 6월 20일
0

Kubernetes & Docker

목록 보기
8/12

Wordpress + Mysql 연동

이전에 ansible에서도 했고, 수동적으로 각 가상머신에서도 구축을 했던 wordpress와 mysql을 docker를 이용해서도 연동하여 구축을 하였고,
w1은 bridge 네트워크, w2는 Host네트워크를 사용하여 시연을 해보았습니다

총 2대의 가상 머신을 사용하였으며 Rocky9 을 사용하였습니다
Rocky9-1 -> wordpress(w1), wordpress(w2,host)
Rocky9-2 -> Mysql(m1), Mysql(m2,host)

Mysql (Rocky9-2)

#m1
docker pull mysql:5.7
docker run -itd -e MYSQL_ROOT_PASSWORD=It12345! \
 -e MYSQL_DATABASE=wordpress -e MYSQL_PASSWORD=It12345! \ 
-p 63306:3306 --name m1 mysql:5.7

우선 1번은 bridge 네트워크를 사용하여 구축, -p 63306:3306 포트를 사용하여 외부를 통해 접속 할 수 있도록 하였습니다

mysql:5.7버전을 pull 해와서 사용을 하는데 mysql 을 실행하기 위해선 필수적으로 들어가야하는 환경변수가 있습니다 -e 옵션을 사용하여
환경변수를 설정해 주었으며

MYSQL_ROOT_PASSWORD=<mysql_password>
MYSQL_DATABASE=<database_name>
MYSQL_PASSWORD=<mysql_password>

이렇게 3가지는 필수적으로 설정해줘야하는 환경변수들이니 꼭 참고하시고 넣으시면 됩니다

#m2
docker run -itd -e MYSQL_ROOT_PASSWORD=It12345! \
 -e MYSQL_DATABASE=wordpress -e MYSQL_PASSWORD=It12345! \ 
--net host --name m2 mysql:5.7

m2에서는 Host 네트워크를 사용하여 구축을 하기로 했었습니다 그러므로 -p(publish) 옵션을 사용하면 오류가 뜨고 실행이 불가능해 질것입니다
--net host 를 사용하여 실행할때 네트워크를 지정해줍니다



Wordpress (Rocky9-1)

먼저 wordpress는 /var/www/html/wp-config.php에서 설정파일을 수정하여 mysql과 연동을 해주었습니다

하지만 도커에서 실행을 시킬때에는 mysql과 마찬가지로 꼭 필수적으로 넣어줘야할 환경변수가 있습니다

WORDPRESS_DB_HOST=<지정해야할 IP>
WORDPRESS_DB_NAME=<데이터베이스 이름>
WORDPRESS_DB_USER=<데이터베이스 유저이름>
WORDPRESS_DB_PASSWORD=<데이터베이스 패스워드>
이 4가지는 무조건 필수적으로 넣어줘야하는 환경변수 들입니다
-e옵션을 사용하여 mysql과 동일하게 입력을 해주면 됩니다

이전에 실행을 해봤는데 wordpress:5.7버전으로 사용을 했었습니다
하지만 설정파일이 올바르게 들어가지 못해서 wordpress:5.6버전을 다시 pull해와서 사용을 하였습니다

#w1
docker pull wordpress:5.6
docker run -itd -p 60080:80 -e WORDPRESS_DB_HOST=10.0.0.12:63306 \
-e WORDPRESS_DB_NAME=wordpress -e WORDPRESS_DB_USER=root \
-e WORDPRESS_DB_PASSWORD=It12345! --name w1 wordpress:5.6

w1은 bridge 네트워크를 사용하기 때문에 외부에서 통하는 포트와 내부 포트를 지정해 주었습니다 -p 60080:80

#w2
docker run -itd -e WORDPRESS_DB_HOST=10.0.0.12 \
-e WORDPRESS_DB_NAME=wordpress -e WORDPRESS_DB_USER=root \
-e WORDPRESS_DB_PASSWORD=It12345! --net host --name w2 wordpress:5.6

이렇게 하면 정상적으로 잘 설치 되는 것을 보실 수 있습니다

하지만 host네트워크는 docker의 지배가 아닌 firewall의 지배를 받습니다 그러므로 host에서 방화벽을 따로 열어줘야 접속이 가능해집니다

#rocky9-1
firewall-cmd --add-port=80/tcp

#rocky9-2
firewall-cmd --add-port=3306/tcp

두개다 정상적으로 실행이 된 모습

profile
매일 발전하는 Cloud Engineer

0개의 댓글