[TIL] 24.11.20 WED

GDORI·2024년 11월 20일
0

TIL

목록 보기
108/143
post-thumbnail

오늘은 EC2 우분투 환경에서 도커를 이용해 서버를 올리는 방법과 EC2 인스턴스 초기화에 대해 알아보았다.

EC2 인스턴스 초기화

서버 느려

초기 설정을 잘못했는지 서버를 인스턴스에 올린지 하루만에 반응속도가 엄청 느려졌다.
apt-get installnode를 설치하고 nvm으로 또 설치해서 충돌이 난 이유인 것 같다.

시작 시점으로 돌리기

가장 좋은 방법은 스냅샷 기준으로 돌리기인데, 스냅샷이 없는 관계로 시작시점으로 돌린다.

인스턴스 관리 화면에서 작업 - 모니터링 및 문제 해결 - 루트 볼륨 대체 을 클릭한다.

복원 탭에서 시작상태체크해주고 대체된 루트 볼륨 삭제체크해준 후 대체 작업 생성 버튼을 눌러준다.

완료

1분 뒤 ssh 연결하면 된다!

인 줄 알았지만?

ssh 를 연결했을 때 이런 문제가 발생할 수 있다.
EC2 인스턴스의 루트 볼륨을 대체하면 새로운 인스턴스와 동일한 효과가 발생하기 때문에 SSH 키가 변경되었을 가능성이 크다.
그럴때는 당황하지 않고 호스트 키에서 삭제해주면 된다.

ssh-keygen -R <EC2-인스턴스-주소>

찐 완료

Docker로 서버 띄우기

작업중인 프로젝트 최상단에 Dockerfile 생성


이 친구들 위치에 두면 된다.

안에 순서대로 레이어를 쌓아준다.

  1. FROM은 베이스가 될 이미지를 적어준다.
    사진의 경우 Node.js 20 버전 기반의 경량 Alpine Linux 이미지를 사용한다는 뜻이다.

  2. WORKDIR은 도커 환경에서 나의 프로젝트가 실행될 위치를 정해준다.
    컨테이너 내부에서 애플리케이션 파일이 배치될 작업 디렉토리를 /app으로 설정한다는 뜻으로 원하는 이름으로 해도 된다.

  3. COPY는 말 그대로 복사인데 현재 3번째에서는 종속성 파일을 복사한다.

  4. RUN은 npm install 명령어로 package.json에 정의된 의존성을 설치한다.

  5. 여기 COPY는 애플리케이션의 파일을 복사한다.
    현재 디렉토리의 모든 파일과 폴더를 컨테이너 /APP 디렉토리로 복사한다는 뜻이다.

  6. ENTRYPOINT는 컨테이너 실행 시 실행 할 명령이다. 사진에는 서버 구동을 위한 명령이 적혀있다.

이미지 빌드

터미널에서 docker build -f dockerfile -t <생성 할 이미지 이름> . 를 입력해준다.
마지막 .은 docker 파일이 위치한 곳이다.

Docker 컨테이너 실행

docker run -p <호스트 원하는 포트>:<컨테이너 원하는 포트> <생성한 이미지 이름>
해당 명령어로 호스트의 포트를 컨테이너 포트로 매핑하여 컨테이너를 실행시킬 수 있다.

이미지 docker hub에 push

  1. docker login 명령어를 통해 로그인 해준다.
  2. docker tag <아까 만든 이미지 이름> <Docker Hub 사용자명>/<아까 만든 이미지 이름>:latest 입력을 통해 태그 이름을 docker 허브에 올리기 위한 이름으로 바꾼다.
  3. docker push <Docker Hub 사용자명>/<이미지 이름>:latest 으로 푸쉬한다.


한 30초 기다려주면 완료!

.dockerignore 예시

node_modules
*.env

우리가 .gitignore 작성하는 것처럼 도커도 지정해줄 수 있다.

EC2 이리온~ 도커 깔아보자.

  1. 도커 패키지 업데이트 및 설치
sudo apt update
sudo apt install -y docker.io
  1. 도커 서비스 활성화 및 시작
sudo systemctl enable docker
sudo systemctl start docker
  1. 설치 확인
docker --version
  1. 현재 사용자를 docker 그룹에 추가
sudo usermod -aG docker $USER

위 명령어로 유저를 추가해준다.

newgrp docker

위 명령어로 현재 쉘을 새로고침 해준다.

docker ps

명령어가 잘 실행되는지 확인한다.

도커 허브에서 이미지를 받아오기

  1. 도커 로그인
docker login

비밀번호 칠 때 * 안나오고 안쳐지는 것처럼 보이는데 타이핑 되고 있다.
잘 입력하고 엔터치면 된다.

  1. 도커 허브에서 이미지 받아오기
docker pull <아까 푸쉬한 이미지 이름>

  1. 받아온 이미지 확인
docker images

이미지로 컨테이너 실행하기

docker run -d -p <호스트 포트>:<컨테이너 포트> <이미지파일>

위 명령어로 받아온 이미지를 백그라운드로 실행합시다.
docker logs <컨테이너 id> 로 애플리케이션 실행 시 로그를 확인할 수 있다.
완료!

profile
하루 최소 1시간이라도 공부하자..

0개의 댓글