아마존 AWS 도커 컴포즈로 워드프레스 설치
클라우드에 대해 공부해보고자 인프런의 "AWS 클라우드 서비스 인프라 구축 이해와 해킹, 보안" 강의를 수강하면서 필기한 내용입니다.
도커 워드프레스(Docker WordPress)는 Docker를 이용하여 WordPress 웹사이트를 손쉽게 배포하고 관리할 수 있는 환경을 제공한다.
도커 설치
먼저, 시스템의 패키지 목록을 업데이트

도커 설치

도커 컴포즈 설치

도커 컴포즈
- 도커파일과 달리 기초적인 이미지들까지만 만들어낼 수 있는 환경
- 도커 파일과 함께 배포하는 경우가 많음
우선 ip를 볼 수 있는 명령어를 통해(ip addr, ipconfig등) 자신을 ip를 확인해야 한다.
docker compose 샘플
https://github.com/docker/awesome-compose/blob/master/wordpress-mysql/compose.yaml
services:
db:
# We use a mariadb image which supports both amd64 & arm64 architecture
#image: mariadb:10.6.4-focal
# If you really want to use MySQL, uncomment the following line MySQL을 사용하려면 다음 행에 대한 설명을 해제합니다
image: mysql:8.0.27
command: '--default-authentication-plugin=mysql_native_password'
volumes:
- db_data:/var/lib/mysql #저장할 볼륨 설정
restart: always # 재실행시 항상 실행
environment:
- MYSQL_ROOT_PASSWORD=somewordpress
- MYSQL_DATABASE=wordpress
- MYSQL_USER=wordpress
- MYSQL_PASSWORD=wordpress
expose:
- 3306
- 33060
wordpress:
image: wordpress:latest
ports:
- 80:80
restart: always
environment:
- WORDPRESS_DB_HOST=db
- WORDPRESS_DB_USER=wordpress
- WORDPRESS_DB_PASSWORD=wordpress
- WORDPRESS_DB_NAME=wordpress
volumes:
db_data:
vim 실행
파일 이름을 docker-compse.yml로 지정하면 뒤에 나올 실행 명령어들에서 더 효율적이고 편리해질 수 있다.
html 파일은 templates 파일에 넣는 것처럼 말이다

docker compose 샘플 복사 붙여넣기

확인


정의된 컨테이너를 백그라운드에서 실행

그러나 오류가 발생한다.

이는 도커와 도커 컴포즈의 버전 문제이다.
docker -v

docker-compose -v

도커 컴포즈가 구버전인듯(인프런 강의 영상이 2022년 버전이라 그런듯)
오류 해결 방법
도커 컴포즈 삭제

가끔 docker-compose의 위치 경로가 아닐 수도 있는데
이럴땐 which docker-compose 이 명령어를 이용해 경로를 찾아 삭제하면 된다.
도커 설치
sudo curl -L "https://github.com/docker/compose/releases/latest/download/docker-compose-$(uname -s)-$(uname -m)" -o /usr/bin/docker-compose
이후 다시 명령어를 입력


sudo docker ps 명령어를 통해서 동작하고 있는 이미지를 확인할 수 있다.

ip addr 명령어를 통해 도커 이미지들의 ip가 할당된 것을 확인해 볼 수 있다.
보안 그룹 설정


보안 그룹 이름 설정

인바운드 규칙 추가


보안 그룹 변경


기존에 연결된 보안 그룹은 제거 후 저장

이후 퍼블릭 IPv4 주소:80을 입력하면 접속할 수 있다.


이후 계정 생성 완료하고 로그인하면 된다.

mysql 기본 포트 충돌
저는 로컬에서 mysql을 사용하고 있었기 때문에 기본 포트인 3306을 사용하여 충돌이 일어났습니다.
해결 방법으로는 포트를 3307로 바꿨습니다.
services:
db:
# We use a mariadb image which supports both amd64 & arm64 architecture
#image: mariadb:10.6.4-focal
# If you really want to use MySQL, uncomment the following line MySQL을 사용하려면 다음 행에 대한 설명을 해제합니다
image: mysql:8.0.27
command: '--default-authentication-plugin=mysql_native_password'
volumes:
- db_data:/var/lib/mysql #저장할 볼륨 설정
restart: always # 재실행시 항상 실행
environment:
- MYSQL_ROOT_PASSWORD=somewordpress
- MYSQL_DATABASE=wordpress
- MYSQL_USER=wordpress
- MYSQL_PASSWORD=wordpress
expose:
- 3307
- 33060
ports:
- 3307:3306 # 호스트의 3307 포트를 컨테이너의 3306 포트에 매핑
wordpress:
image: wordpress:latest
ports:
- 80:80
restart: always
environment:
- WORDPRESS_DB_HOST=db
- WORDPRESS_DB_USER=wordpress
- WORDPRESS_DB_PASSWORD=wordpress
volumes:
db_data:
수정후에는 도커를 한 번 다운시키고 재업로드 해주시면 됩니다.
docker-compose down
docker-compose up -d