워드프레스는 웹 사이트를 만들기 위한 소프트웨어로, 이번 과정에서는 여러 개의 컨테이너를 다루는 연습 소재로서 워드프레스 사이트를 구축해보는 연습을 할 것이다.
워드프레스는 워드프레스 컨테이너와 MySQL 컨테이너로 구성된다.
워드프레스는 간단히 말해 블로그 생성 도구와 같은 것으로, 웹 사이트 작성자가 작성한 내용을 데이터베이스에 저장하고, 웹 사이트 열람자의 요청에 따라 웹 페이지를 보여준다.
즉 프로그램이 MySQL에 저장된 데이터를 읽고 쓸 수 있어야 하기 때문에 두 컨테이너가 연결돼있어야 한다.
가상 네트워크를 만들고, 이 네트워크에 두 개의 컨테이너를 소속시켜 두 컨테이너를 연결하는데 이 커맨드가 바로 docker network create
이다.
docker network create [네트워크 이름]
docker network rm [네트워크 이름]
이번 실습에서 사용할 MySQL 컨테이너는 실제로 사용할 수 있어야 하기 때문에 옵션 아홉가지와 인자 세가지를 지정한다.
옵션을 먼저 살펴보자.
--name
, -dit
옵션은 이미 사용해봤으니 넘어가고 나머지 다섯가지를 살펴보자. 나머지는 모두 -e
옵션으로 환경변수를 설정하기 위해 사용한다.
--net
: 연동되는 네트워크 이름-e MYSQL_ROOT_PASSWORD
: MySQL 루트 패스워드-e MYSQL_ROOT_PASSWORD
: MySQL 컨테이너 이름-e MYSQL_DATABASE
: MySQL 데이터베이스 이름-e MYSQL_USER
: MySQL 사용자 이름-e MYSQL_PASSWORD
: MySQL 패스워드루트 패스워드 & 사용자 패스워드
루트는 모든 권한을 가진 사용자로 이 권한이 없으면 할 수 없는 작업이 있지만,
매번 루트 사용자로 접속할 경우 보안 측면에서 문제가 생기기 때문에 제한된 권한을 가지는 일반 사용자로 전환하는 것이 일반적이다.
인자로는 세가지가 사용된다.
--character-set-server
: 문자 인코딩--collation-server
: 정렬 순서--default-authentication-plugin
: 인증 방식워드프레스 컨테이너에도 옵션이 10가지가 사용된다.
하지만 대부분이 데이터베이스(이 실습에서는 MySQL)과 관련된 정보이다.
인자는 필요하지 않다.
--name
, -dit
, --net
옵션을 제외한 나머지 5가지 옵션을 알아보자.
-p
: 포트 번호 설정-e WORDPRESS_DB_HOST
: 데이터베이스 컨테이너 이름-e WORDPRESS_DB_NAME
: 데이터베이스 이름-e WORDPRESS_DB_USER
: 데이터베이스 사용자 이름-e WORDPRESS_DB_PASSWORD
: 데이터베이스 컨테이너워드프레스 컨테이너를 사용해 실제로 실행해보는 실습을 진행하겠다.
1. 네트워크 생성
2. MySQL 컨테이너 생성
3. 워드프레스 컨테이너 생성
4. 컨테이너 및 네트워크 확인
순서로 진행하겠다.
➡️ docker network create wordpress000net1
네트워크를 생성한다.
제대로 생성됐는지 확인하기 위해서는 ls
커맨드를 사용한다.
➡️ docker run --name mysql000ex11 -dit --net=wordpress000net1 -e MYSQL_ROOT_PASSWORD=myrootpass -e MYSQL_DATABASE=wordpress000db -e MYSQL_USER=wordpress000kun -e MYSQL_PASSWORD=wkunpass mysql --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci --default-authentication-plugin=mysql_native_password
아홉가지 옵션과 세가지 인자를 사용해 MySQL 컨테이너를 생성한다.
인자
--character-set-server=utf8mb4
: 문자 인코딩으로 UTF8을 사용--collation-server=utf8mb4_unicode_ci
: 정렬 순서로 UTF8을 따름--default-authentication-plugin=mysql_native_password
: 인증 방식을 예전 방식으로 변경
M1에서 실행하므로 여기에도
--platform linux/amd64
옵션을 추가로 작성해야 한다.
➡️ docker run --name wordpress000ex12 -dit --net=wordpress000net1 -p 8085:80 -e WORDPRESS_DB_HOST=mysql000ex11 -e WORDPRESS_DB_NAME=wordpress000db -e WORDPRESS_DB_USER=wordpress000kun -e WORDPRESS_DB_PASSWORD=wkunpass wordpress
10가지의 옵션을 이용해 워드프레스 컨테이너를 생성한다.
ps
커맨드를 실행해 MySQL, 워드프레스 두가지 컨테이너가 모두 실행중인지 확인한다.
웹 브라우저에서 http://localhost:8085
에 접근해 워드프레스의 초기 화면을 확인한다.
사용한 컨테이너를 종료 및 삭제한다.
이미지 또한 삭제한다.
ls
커맨드로 모두 잘 삭제됐는지 확인한다.
이번에는 워드프레스 외의 다른 소프트웨어를 사용해 실습을 진행하겠다.
티켓 관리 시스템인 레드마인 컨테이너를 만들어 볼 것이고 데이터베이스는 MariaDB를 사용하겠다.
레드마인 컨테이너와 이전에 만들어보았던 워드프레스 컨테이너는 포트 번호와 옵션 이름이 살짝 다른것을 제외하고는 거의 같은 구성을 띈다.
➡️ docker network create redmine000net3
네트워크를 생성한다.
제대로 생성됐는지 확인하기 위해서는 ls
커맨드를 사용한다.
➡️ docker run --name mariadb000ex15 -dit --net=redmine000net3 -e MYSQL_ROOT_PASSWORD=mariarootpass -e MYSQL_DATABASE=redmine000db -e MYSQL_USER=redmine000kun -e MYSQL_PASSWORD=rkunpass mariadb --character-set-server=utf8mb4 --collationserver=utf8mb4_unicode_ci --default-authentication-plugin=mysql_native_password
아홉가지 옵션과 세가지 인자를 사용해 MariaDB 컨테이너를 생성한다.
➡️ docker run -dit --name redmine000ex16 --network redmine000net3 -p 8087:3000 -e REDMINE_DB_MYSQL=mariadb000ex15 -e REDMINE_DB_DATABASE=redmine000db -e REDMINE_DB_USERNAME=redmine000kun -e REDMINE_DB_PASSWORD=rkunpass redmine
7가지의 옵션을 이용해 레드마인 컨테이너를 생성한다.
ps
커맨드를 실행해 MariaDB, 레드마인 두가지 컨테이너가 모두 실행중인지 확인한다.
이미지와 네트워크 정보도 함께 확인한다.
웹 브라우저에서 http://localhost:8087
에 접근해 레드마인의 초기 화면을 확인한다.
사용한 컨테이너, 이미지, 네트워크를 모두 삭제한다.
ls
커맨드로 모두 잘 삭제됐는지 확인한다.