카테고리 없음

AWS EC2에 docker를 이용한 정적 사이트를 아주 간단하게 배포해보기

곽빵 2022. 11. 9. 13:53

개요

클라우드 환경에 docker를 이용한 미니멈한 정적 사이트(html, css, js 만으로 쓰여진)를 배포하는 과정

 

1. EC2 준비하기

인스턴스를 하나 생성하는데 이하의 조건이 충족해야 한다.

  • 인스턴스에 탄력적 IP를 할당
  • 보안그룹에서 정적 사이트를 배포할 포트를 하나 새로 생성

보안그룹 포트 생성 ↓

2. 인스턴스에 docker를 설치

ssh를 통해 인스턴스에 원격 접속을 하고

chmod 400 aws20221103.pem #굳이 이렇게 권한을 변경하는 이유는 ssh접속을 할 때 이 파일에 대한 권한이 너무 안맞으면 에러가 나면서 접속이 불가능하기 때문이다.
ssh -i key.pem ubuntu@고정IP주소

 

이하의 코맨드를 이용해 도커를 설치

sudo apt update
sudo apt install apt-transport-https ca-certificates curl software-properties-common
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"
sudo apt update
sudo apt install docker-ce

# docker-compose 필요한 경우
sudo apt install docker-compose

버전이 잘 나오면 성공!

docker -v

 

3. FTP를 이용해 배포할 파일을 인스턴스에 업로드

Filzilla를 이용해 업로드

 

1. 접속할 리모트 서버 셋팅

2. 업로드 (드래그 앤 드롭으로 배포할 파일 옮기면 된다.)

4. 도커를 이용한 배포

이하의 코맨드를 ssh를 이용한 인스턴스 내부에서 실행한다.

docker run -d -p 7777:80 -v /home/ubuntu/startbootstrap-freelancer-gh-pages:/usr/local/apache2/htdocs httpd

run: pull, create, start를 합친 명령어로써 이미지가 없으면 가져와서 설치하고 컨테이너를 생성하고 컨테이너를 가동시킨다.

-d: 리눅스의 &과 비슷한? 느낌으로 도커의 실행을 백그라운드에서 하겠다 라는 의미

-p 7777:80:  NAPT(Network Address Port Translation) 이라는 도커의 기술로 호스트PC 특정 포트에 접근하면 도커 컨테이너 내부의 특정 포트와 연결 시켜주는 기술이다. 여기서는 호스트pc의 7777에 접속하면 도커의 80 포트에 연결하겠다 라는 의미

-v ${호스트PC의 파일 절대경로}:${컨테이너 안의 파일 절대경로}: 이건 호스트 PC안에 배포할 파일들을 컨테이너 안으로 집어 넣겠다라는 의미로 -v는 volumn의 약자라고 한다.

httpd: docker hub에 있는 apache의 공식 이미지이다. 이걸 가져와서 아파치 웹서버 이용해 내 정적 사이트를 배포하겠다.

 

docker run을 실행했을때 이하의 에러 발생시

Couldn't connect to Docker daemon at http+docker://localhost - is it running?
sudo usermod -aG docker $USER

sudo ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose

sudo service docker restart

# 일단 종료하고 재접속해야 권한설정이 다시된다.
exit

5. 결과