어떻게 배포를 할까하다가 docker hub를 이용하기로 했다. docker hub에 push하고 ec2에서 pull해서 진행하도록 했다.
도커 이미지를 docker hub에 push 하려고 했는데, push가 되지 않았다.
그래서 기존의 docker-compose.yml을 다음처럼 했다.
그거 추가하면서 env_file: 과 관련해서도 적어주었다.
이게 지금 상황에서 의미가 있는진 모르겠지만 일단 작동하니까.
services:
backend:
build: ./backend/tarotMilkTea/tarotback
image: 유저네임/이미지명
ports:
- "8000:8000"
env_file:
- ./backend/tarotMilkTea/tarotback/.env
frontend:
build: ./frontend/tarotmilktea
image: 유저네임/이미지명
ports:
- "3000:3000"
depends_on:
- backend
env_file:
- ./frontend/tarotmilktea/.env
nginx:
build: ./nginx
image: 유저네임/이미지명
ports:
- "80:80"
depends_on:
- backend
- frontend
이렇게 하니 docker에 push가 가능해졌다.
그리고 난 desktop docker를 사용하고 있으니 여기서 각각의 이미지를 push해주었다.
그리고 docker-hub 페이지에 들어가니 내가 원하는 방식은 아니지만 올라는 가 있었다.
이것을 ec2에서 pull 하기 위해 ec2의 인스턴스에 로그인했고, docker까지 모두 설치완료 후,
docker login -u 유저네임
을 진행했지만, 나는 google로그인이라 password를 작성하지 못했다.
이것에 대해서는
Create and manage access tokens
에서 방법을 확인하면 된다.
- docker hub페이지 에서 로그인
- 우측 상단에 프로필이미지를 선택
- 들어가는 페이지에서 Security로 들어간다.
- New Access Token으로 Access Token을 생성하고 이 때 만들어지는 것을 기록하고 잊지말자.
4-1 왜냐하면 잊으면 다시 못봄.
이렇게 해서 다시 로그인을 하고,
docker pull 유저네임/Repositories명:태그명
으로 하면 받을 수 있다.
나는 3개의 이미지가 있으므로 3개를 pull 했고
실행을 다음처럼 했다.
backend, frontend, nginx 3개이므로 아래처럼 했고, backend의 경우 django이기에 8000:8000을 시도했으나, 안되어서 그냥 했더니 작동했다.
--link를 붙인 것은 depends_on 관계 때문이다.
docker run -d --name backend 유저이름/Repositories1명:태그명1
docker run -d --name frontend -p 3000:3000 --link backend:backend 유저이름/Repositories2명:태그명2
docker run -d --name nginx -p 80:80 --link frontend:frontend --link backend:backend 유저이름/Repositories3명:태그명3
그런데!!! 문제가 생겨부러따....
메모리 부족으로 멈췄다. 따흑.... 그래서 중지를 시키고, 한 얼마나 있었는지 모르겠지만 몇 분 후 완전히 중지 되었음을 확인하고 다시 가동 시켰다.
swap 메모리를 추가해야겠다.
아래 블로그를 참고했다.
나 역시 프리티어로 1gb의 램 이기에, 스왑메모리를 2gb로 잡았다. 이러면 docker돌리기는 가능할 것이다.
참고 블로그
EC2 인스턴스에 접속.
swapfile 메모리 할당
나 역시 2GB를 스왑메모리로 설정했다.
sudo dd if=/dev/zero of=/swapfile bs=128M count=16
스왑메모리 설정을 4GB로 하고 싶으면
sudo dd if=/dev/zero of=/swapfile bs=128M count=32
swapfile이 생성되었을 텐데
읽기, 쓰기가 가능하도록 권한을 수정
sudo chmod 600 /swapfile
sudo mkswap /swapfile
mkswap: Make Swap의 약자로 스왑 파티션이나 스왑 파일을 생성하는 명령어
sudo swapon /swapfile
swapon 명령어가 정상으로 동작했는지 확인
sudo swapon -s
swapon: 스왑으로 사용하는 파일의 경로 및 이름, 타입, 크기, 사용 중인 부분, 우선순위 등을 보여주는 명령어
만약 스왑 영역을 비활성화하려면 swapoff 명령어를 사용
sudo swapoff -a
sudo vi /etc/fstab
아래 내용을 추가하고 저장
/swapfile swap swap defaults 0 0
i를 누르면 편집모드가 되는데 그 때 마지막에서 엔터를 치자. 다 쳤으면 esc키를 눌러서 편집을 빠져나오고, 저장하고 나가려면 :wq 를 입력하고 나가자.
잘 못 조정 했으면 :q! 를 치자.


free -h
2.01로 Swap 메모리가 할당 된 것을 확인 할 수 있다.
