728x90
반응형
컨테이너에 워드프레스 사이트 구축
- 워드프레스: 웹 사이트를 만들기 위한 SW
- 워드프레스는 워드프레스 프로그램 외에도, 아파치나 데이터베이스, PHP 런타임등을 필요로 한다.
- 따라서 워드프레스 사이트 구축은, 여러 개의 컨테이너를 다루는 연습 소재로서 괜찮다.
- 워드프레스는, 워드프레스 컨테이너와 MySQL 컨테이너로 구성된다.
- 비유를 하자면, 워드프레스는 블로그 생성 도구이고, 웹 사이트 작성자가 작성한 내용을 데이터베이스에 저장
- 웹 사이트 열람자의 요청에 따라 웹 페이지를 보여준다.
- 즉, 프로그램이 MySQL에 저장된 데이터를 읽고 쓸 수 있어야 하기 때문에, 두 컨테이너가 연결되어야 한다.
- 가상 네트워크를 만들어, 이 네트워크에 2개의 컨테이너를 소속시켜 2개의 컨테이너를 연결한다.
도커 네트워크 관련 명령어들
- 도커 네트워크를 생성하는 명령어: docker network create 네트워크_이름
- 도커 네트워크를 삭제하는 명령어: docker network rm 네트워크_이름
- 그 외 토커 네트워크 관련 명령어
- 상위 명령어인 network도 네트워크 목록 확인과 같은 하위 명령어를 갖추고 있다.
명령어 | 내용 | 생략 가능 여부 | 주요 옵션 |
connect | 네트워크에 컨테이너를 새로이 접속 | X | 거의 사용하지 않음 |
disconnect | 네트워크에서 컨테이너의 접속을 끊음 | X | 거의 사용하지 않음 |
create | 네트워크를 생성 | X | 거의 사용하지 않음 |
inspect | 네트워크의 상세 정보를 확인 | X | 거의 사용하지 않음 |
ls | 네트워크의 목록을 확인 | X | 거의 사용하지 않음 |
prune | 현재 아무 컨테이너도 접속하지 않은 네트워크를 모두 삭제 | X | 거의 사용하지 않음 |
rm | 지정한 네트워크를 삭제 | X | 거의 사용하지 않음 |
MySQL 컨테이너 실행 시, 필요한 옵션과 인자들
자주 사용하는 명령어: docker run --name 컨테이너_이름 -dit --net=네트워크_이름 -e MYSQL_ROOT_PASSWORD=MySQL_루트_패스워드 -e MYSQL_DATABASE=데이터베이스_이름 -e MYSQL_USER=MySQL_사용자이름 -e MYSQL_PASSWORD=MySQL_패스워드 mysql --character-set-server=문자_인코딩 --collation-server=정렬_순서 --default-authentication-plugin=인증방식
사용된 옵션
- -dit 는 앞에서 설명했듯이, 백그라운드로 동작(d), 터미널에 키보드를 연결(i), 특수 키를 사용(t) 이다.
- --name은 컨테이너 이름을 지정하는 것이고, --net은 컨테이너를 연결할 도커 네트워크
- 나머지는 모두 -e 옵션으로 환경변수를 설정하기 위해 사용한다.
- 컨테이너의 설정값을 환경변수로 전달하는 경우가 많다.
항목 | 옵션 | 실습에서 사용할 값 |
네트워크 이름 | --net | wordpress00net1 |
MySQA 컨테이너 이름 | --name | mysql00ex11 |
실행 옵션 | -dit | 없음 |
MySQL 루트 패스워드 | -e MYSQL_ROOT_PASSWORD | myrootpass |
MySQL 데이터베이스 이름 | -e MYSQL_DATABASE | wordpress00db |
MySQL 사용자 이름 |
-e MYSQL_USER | wordpress00charm |
MySQL 패스워드 |
-e MYSQL_PASSWORD | wcharmpass |
- 패스워드는 루트 패스워드와 일반 사용자 패스워드 두가지를 설정한다.
- 루트(root)는 모든 권한을 가진 사용자로, 이 권한이 없다면 할 수 없는 작업이 있다.
- 하지만, 매번 루트 사용자로 접속하면, 보안 측면에서 문제가 발생한다.
- 따라서, 제한된 권한을 가진 일반 사용자로 전환하는 것이 일반적이다.
- 연습이기 때문에, 패스워드는 쉬운 것들로 한다.
사용된 인자
- 한국어 사용을 위한 인자 2개, 인증방식을 변경하는 인자 1개가 사용됐다.
- 3개의 인자가 사용됐는데, 이들의 값은 MySQL 컨테이너에서만 사용되는 값이다.( 도커에서 사용되는 옵션 X )
항목 | 인자 | 값 | 의미 |
문자 인코딩 | --character-setserver= | utf8mb4 | 문자 인코딩으로 UTF8을 사용 |
정렬 순서 | --collation-server= | utf8mb4_unicode_ci | 정렬 순서로 UTF8을 따름 |
인증 방식 | --default-authentication-plugin= | mysql_native_password | 인증방식을 예전 방식(native)으로 변경 |
- MySQL5에서 MySQL8로 버전이 업데이트 되면서, 외부 SW가 MySQL에 접속하는 인증 방식을 바꿨다.
- 워드프레스 같은 SW 중에서 새로운 인증방식을 아직 지원하지 않는 경우도 있으므로, 예전 방식을 사용한다.
워드프레스 컨테이너 실행 시 필요한 옵션과 인자
자주 사용하는 명령어: docker run --name 컨테이너_이름 -dit --net=네트워크_이름 -p 포트_설정 -e WORDPRESS_DB_HOST=데이터베이스_컨테이너_이름 -e WORDPRESS_DB_NAME=데이터베이스_이름 -e WORDPRESS_DB_USER=데이터베이스_사용자_이름 -e WORDPRESS_DB_PASSWORD=데이터베이스_패스워드 wordpress
항목 | 옵션 | 설정값 |
네트워크 이름 | --net | wordpress00net1 |
워드프레스 컨테이너 이름 | --name | wordpress00ex12 |
실행 옵션 | -dit | (없음) |
포트 번호 설정 | -p | 8085:80 |
데이터베이스 컨테이너 이름 | -e WORDPRESS_DB_HOST | mysql00ex11 |
데이터베이스 이름 | -e WORDPRESS_DB_NAME | wordpress00db |
데이터베이스 사용자 이름 | -e WORDPRESS_DB_USER | wordpress00charm |
데이터베이스 패스워드 | -e WORDPRESS_DB_PASSWORD | wcharmpass |
- 워드프레스는 데이터베이스를 사용하는 SW이므로, 연동될 데이터베이스에 대한 정보를 설정한다.
- 지금까지 설정한 정보는 물론 MySQL 컨테이너의 설정값과 동일한 값이어야 한다.( 다르면 연동 X )
워드프레스와 MySQL 컨테이너 생성 및 실행
network create 명령어를 사용해, 네트워크를 생성
- 터미널 창에 입력할 명령어: docker network create wordpress00net1
- 네트워크 생성 여부를 알고 싶다면, network ls 명령을 사용하자.
run 명령어를 사용해, MySQL 컨테이너 생성 및 실행
- 터미널 창에 입력할 명령어: docker run --name mysql00ex11 -dit --net=wordpress00net1 -e MYSQL_ROOT_PASSWORD=myrootpass -e MYSQL_DATABASE=wordpress00db -e MYSQL_USER=wordpress00charm -e MYSQL_PASSWORD=wcharmpass mysql --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci
run 명령어를 사용해, 워드프레스 컨테이너 생성 및 실행
- 터미널 창에 입력할 명령어: docker run --name wordpress00ex12 -dit --net=wordpress00net1 -p 8085:80 -e WORDPRESS_DB_HOST=mysql00ex11 -e WORDPRESS_DB_NAME=wordpress00db -e WORDPRESS_DB_USER=wordpress00charm -e WORDPRESS_DB_PASSWORD=wcharmpass wordpress
ps 명령어로, 컨테이너의 상태 확인
- 터미널 창에 입력할 명령어: docker ps
- ps 명령어를 실행해, mysql00ex11, wordpress00ex12라는 이름의 컨테이너가 실행 중인지 확인한다.
웹 브라우저를 통해, 워드프레스에 접근해 확인
- 웹 브라우저에서 http://localhost:8085에 접근해, 워드프레스의 초기 화면이 출력되는지 확인한다.
마무리
- 컨테이너 종료 및 삭제하고, 이미지, 네트워크 역시 삭제하여 정리하자.
- 삭제 후 docker ps -a, docker image ls, docker network ls 명령어로 삭제 여부를 확인하자.
- 컨테이너 종료
- docker stop wordpress00ex12
- docker stop mysql00ex11
- 컨테이너 삭제
- docker rm wordpress00ex12
- docker rm mysql00ex11
- 이미지 삭제
- docker image rm wordpress
- docker image rm mysql
- 네트워크 삭제
- docker network rm wordpress00net1
728x90
'docker & kubernetes' 카테고리의 다른 글
컨테이너 사용법 1 | Docker&Kubernetes 학습 24 (0) | 2024.11.27 |
---|---|
도커 사용방법 16 | Docker&Kubernetes 학습 23 (0) | 2024.11.26 |
도커 사용방법 14 | Docker&Kubernetes 학습 21 (0) | 2024.11.24 |
도커 사용방법 13 | Docker&Kubernetes 학습 20 (0) | 2024.11.23 |
도커 사용방법 12 | Docker&Kubernetes 학습 19 (0) | 2024.11.22 |