클라우드 공부

아마존 AWS 도커 컴포즈로 워드프레스 설치

jjury 2024. 8. 25. 18:09

클라우드에 대해 공부해보고자 인프런의 "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