내가 한 노력들

[Docker] WordPress 환경 구축하기 (2) 본문

IT 공부/Docker

[Docker] WordPress 환경 구축하기 (2)

JONGI-N CHOI 2021. 12. 28. 12:00

저번에 만든 wordpress 환경에 network 적용과, MySQL에는 볼륨옵션을 추가해볼려고 합니다. 

 

기존의 컨테이너 정지 / 삭제 

docker stop mysql 
docker rm mysql
docker stop wordpress
docker rm wordpress

우선 컨테이너를 삭제하기 위해서는 정지된 상태여야 하기 때문에, 컨테이너를 중지 시킨 뒤 삭제해줍니다. 


network 생성

network를 생성하게 되면, 컨테이너를 그룹처럼 관리할 수 있게됩니다. 

그러면, wordpress 컨테이너를 생성할 경우에

-e WORDPRESS_DB_HOST=host.docker.internal로 설정해주었던 것도 

-e WORDPRESS_DB_HOST=mysql   이런식으로 설정이 가능해집니다. 

docker network create wp-network

 


volume 생성

볼륨옵션을 사용하는 이유는, 컨테이너는 삭제 되면 안에 데이터가 삭제가 됩니다.

컨테이너에서 사용한 data를 local폴더에 저장한뒤, 컨테이너 생성시에 연결해주게 되면 기존에 사용한 데이터를 계속 사용할 수 있게 됩니다. 

 

볼륨은 따로 생성하지 않아도, 컨테이너가 생성이될 때 자동적으로 생성이 됩니다. 

그리고, 컨테이너가 삭제되면 자동적으로 삭제가 되기 때문에, 컨테이너가 한번 삭제되면 데이터가 삭제되는 것 입니다.

 

볼륨 생성

docker volume create mysql-vol

 

볼륨 리스트

docker volume ls

 

볼륨 상세정보

docker volume inspect mysql-vol

 


MySQL 컨테이너 생성 (볼륨 옵션과 네트워크 옵션 추가)

docker run -d -p 3306:3306 \
-e MYSQL_ALLOW_EMPTY_PASSWORD=true \
--network=wp-network \
--name mysql \
-v mysql-vol:/var/lib/mysql \
mysql:5.7

-v :볼륨 옵션

mysql-vol:/var/lib/mysql :   ":" 앞에는 위에서 생성한 볼륨을 지정  ":"뒤는 mysql 서버의 mysql 폴더 위치 

 

--network : network 연결 


WordPress 컨테이너 생성 ( network를 적용 )

docker run -d -p 8080:80 \
--network=wp-network \
-e WORDPRESS_DB_HOST=mysql \
-e WORDPRESS_DB_NAME=wp \
-e WORDPRESS_DB_USER=wp \
-e WORDPRESS_DB_PASSWORD=wp \
--name wordpress \
wordpress

 

--network: network 연결 

-e WORDPRESS_DB_HOST=mysql  :  wp-network에는 mysql이 이미 연결되어있기 때문에 mysql을 입력하는 것만으로도 wp-network에 있는 mysql과 연동이 됩니다. 

 

 

localhost:8080 접근

mysql과 wordpress 서버가 실행중이고, 연동이 되었기 때문에 localhost:8080으로 요청을하면, 정상적으로 화면이 출력되는 것을 볼 수 있습니다. 

 

 

mysql 볼륨옵션을 확인하기 위해서. 글을 하나 수정하고 저장을 합니다. 

그리고, mysql 컨테이너를 삭제하고 다시 생성할 때, data가 유지되는지 확인해보겠습니다.

 

 

MySQL 컨테이너 정지 

docker stop mysql

MySQL 컨테이너 삭제

docker rm mysql

MySQL 컨테이너 재생성

docker run -d -p 3306:3306 \
-e MYSQL_ALLOW_EMPTY_PASSWORD=true \
--network=wp-network \
--name mysql \
-v mysql-vol:/var/lib/mysql \
mysql:5.7

MySQL 컨테이너 실행

docker exec -it mysql mysql

 

database확인

show databases;

MySQL 삭제하기전에 생성해둔 wp 데이터베이스가 그대로 있는 것을 볼 수 있습니다. 

 

이렇듯 볼륨을 통해서 데이터를 백업해두고, 새롭게 컨테이너를 생성해도 백업해둔 데이터를 계속 사용할 수 있습니다.