0. 준비물

SSH 접속 툴 : Mobax

Putty와 FileZilla를 합쳐놓은 듯한 프로그램이다.

사용하기 편하고 무료버전도 충분하다. 다운로드하자. 

https://mobaxterm.mobatek.net/download.html

 

MobaXterm free Xserver and tabbed SSH client for Windows

The ultimate toolbox for remote computing - includes X server, enhanced SSH client and much more!

mobaxterm.mobatek.net

 

참고 내용를 읽어보고 시작하자.

https://ondolroom.tistory.com/815

 

도커 설치 및 기본 이용

참고 영상 youtu.be/hWPv9LMlme8 www.yalco.kr/36_docker/ 가장 쉽게 배우는 도커 어려운 프로그래밍 개념들을 쉽게 설명해주는 유튜브 채널 '얄팍한 코딩사전'. 영상에서 다 알려주지 못한 정보들이나 자주

ondolroom.tistory.com

 

https://ondolroom.tistory.com/881

 

도커 docker 간단 정리

리눅스 우분투에 도커 설치 https://shanepark.tistory.com/237 Ubuntu 20.04 LTS ) Docker 설치하기 Intro Docker는 제가 회사에서 사용하는 노트북의 OS를 Windows 에서 Ubuntu 로 변경하게 된 트리거 였습니다...

ondolroom.tistory.com

 

 

1. SpringBoot 프로젝트 준비 및 세팅

간단한 todoList를 준비하였다. 아래에서 다운로드 받을 수 있다.

springdatajpa_project.zip
0.07MB

 

프로젝트 환경

//스프링부트 버전
springboot 2.6.2
// 자바 환경
java 1.8
// 데이터베이스
h2 mem database
// 포트
8082

 

위 프로젝트를 빌드하여 jar 파일로 만들자.

파일명은 springdatajpa_project 가 앞에 붙도록 제작하는 것을 추천한다.
(ex springdatajpa_project-asdf.jar 등)

 

빌드 툴이 없다면 아래 링크를 따라하여 빌드해보자.

https://velog.io/@kekim20/Spring-Boot-%EB%B9%8C%EB%93%9C%ED%95%98%EC%97%AC-jar%ED%8C%8C%EC%9D%BC-%EC%83%9D%EC%84%B1%EC%8B%A4%ED%96%89%ED%95%98%EA%B8%B0

 

[Spring Boot] 빌드하여 jar파일 생성/실행하기

빌드하고 jar파일로 실행하기

velog.io

 

 

2. AWS EC2 세팅하기 

 

AWS는 콘솔화면이 자주 바뀐다.

20220425날짜 기준으로 작성 중이다.

 

AWS 아이디가 없다면 가입하자.

 

가입하고 인스턴스 시작을 눌러 클라우드 서버를 만들어보자.

 

이름은 없어도 되나 구분을 위해 적어주자.

 

AMI는 서버의 OS를 의미한다.

테스트 결과 도커 환경을 원활히 작동시키는 Ubuntu을 추천한다. 

 

인스턴스 유형은 서버의 성능을 정하는 부분이다.

현재 연습용이기 때문에 프리티어(AWS 신규 가입시 1년간 무료) 유형을 선택하자.

 

키페어는 보안접속을 위한 것이다.

키페어가 있다면 선택해주고, 없거나 새로만들고 싶으면 새 키 페어 생성으로 생성하자.
(생성 시 기본적으로 키페어 유형은 RSA, 여기서는 Mobax를 사용하므로 파일 형식은 pem 추천)

 

기존에 보안 그룹을 만들어 두지 않았다면 아래와 같이
SSH 트래픽허용 / HTTPS 트래픽 허용 / HTTP 트래픽 허용을 선택해주자.(22 / 443 / 80 인바운드 포트가 열린다.)
(추후 다른 포트를 사용할 경우 보안그룹에서 포트 설정을 해줘야 된다는 점을 기억하자.)

 

용량은 10기가 이상 gp3를 이용하는 것을 추천한다.
aws신규 가입자는 프리티어로 비용없이 사용가능 하기 때문에 30기가로 설정해도 무방하다.

 

 

모두 선택했다면 인스턴시작을 눌러주자.

 

모든 인스턴스 보기를 눌러 확인해보자.
(늦게 뜨는 경우가 있으니 새로고침하거나 기다려보자.)

 

퍼블릭 IPv4 주소를 확인하자.
(해당 아이피는 동적 아이피이다. 인스턴스를 중지하고 재실행하면 바뀔 수 있다. 바뀌지 않게 하려면 탄력적 IP를 사용하자.)

 

3. EC2 접속 및 도커 세팅하기

 

MobaXterm을 켜서 접속 세팅을 하자.

 

Session을 누른다.

 

SSH 클릭

Reomte host는 EC2서버의 퍼블릭 주소를 선택한다.

Specify username은 리눅스 서버의 기본유저명을 말한다.
우분투의 경우 ubuntu

포트는 22

Advanced SSH settings를 클릭하고 Use private key를 체크한다.

EC2를 구성할 때 생성한 키페어를 선택하여 넣어준다.

모두 작성했다면 OK를 눌러주자. 

 

아래와 같이 뜨면 접속에 성공한 것이다.

 

아래 링크를 참고하여 우분투에서 도커를 세팅해보자.

https://shanepark.tistory.com/237

 

Ubuntu 20.04 LTS ) Docker 설치하기

Intro Docker는 제가 회사에서 사용하는 노트북의 OS를 Windows 에서 Ubuntu 로 변경하게 된 트리거 였습니다. Docker를 사용하면 정말 편하게 격리된 컨테이너들을 구성해 가상화의 장점을 정말 잘 살릴

shanepark.tistory.com

 

 

4. 프로젝트 배포해보기

 

먼저 편안한 작업을 위해 Super User 권한을 받아오자.

 

원하는 경로에 폴더를 하나 만들어주자.

필자는 project 라고 이름 지었다.

 

해당 디렉토리로 이동해주자.

 

 

도커파일을 만들자.

확장자 없이 파일을 하나 만들고 이름을 Dockerfile 로 만든다.
(만들기 어렵다면, 예제 프로젝트 내부에 도커파일을 만들어 두었으니 사용하면된다.)

아래와 같이 내용을 입력해주자.
(1번 Jar파일 제작에서 정해준 이름에 따라 아래 ARG부분을 적절히 수정해주자. )

아래에 설명이 있으니 참고하자.

# 도커 허브에서 이미지를 가져와서 이미지를 작업한다
# FROM (이미지 이름:버전)
#FROM openjdk:8-alpine3.9
FROM openjdk:8-jre-alpine3.9

# 컨테이너 실행 전 작동할 명령
# RUN (명령)
# 타임존 설정 (설정을 하지 않으면 시간 저장시 다른 시간대로 저장됨)
RUN ln -snf /usr/share/zoneinfo/Asia/Seoul /etc/localtime
RUN echo Asia/Seoul > /etc/timezone

# 컨테이너 내 작업 경로
# WORKDIR (경로)
WORKDIR /app

# 작업 파일을 변수화 하기
# ARG (변수명)=(파일명)
ARG JAR_FILE=springdatajpa_project*.jar

# 작업 파일을 컨테이너로 복사
# COPY (파일명 또는 ${변수명}) (복사할 파일명)
COPY ${JAR_FILE} application.jar

# 컨테이너 시작 시 내릴 명령 (CMD와 ENTRYPOINT 차이 확인)
# ENTRYPOINT [(명령),(매개변수),(매개변수),(...)]
ENTRYPOINT ["java","-jar","application.jar"]

 

도커파일과 Jar 파일을 드래그하여 폴더에 넣어주자.

 

 

도커 배포 순서

1. 이미지 만들기 docker bulid ~

2. 컨테이너 만들기 docker create

3. 컨테이너 실행하기 docker start

(컨테이너 만들기와 실행하기를 동시에 할 경우 docker run을 사용한다.)

 

해당 프로젝트 디렉토리로 이동해보자.

cd /home/ubuntu/project/

 

프로젝트를 이용하여 이미지를 만들어보자.

docker build [옵션] [ -t 이미지 명] [도커파일 경로]

-t 는 이미지에 이름을 붙여준다는 뜻이다.

. 은 도커파일의 경로이다. 아까 도커파일 경로로 이동했기 때문에 . (현재경로)로 입력한다.

docker build -t test_proj_img .

 

성공적으로 만들어 졌다면, 

아래 코드로 이미지를 확인해보자.

docker images

 

컨테이너를 만들어 보자.

docker create [옵션] [-p 외부포트:내부포트] [--name 컨테이너명] [이미지명]

프로젝트는 8082포트로 제작하였지만 외부에서 80포트로 들어올 경우를 가정하여 제작한다.

docker create --restart=always -p 80:8082 --name test_proj test_proj_img

 

컨테이너가 생성되었는지 확인해보자.

-a 옵션은 모든 컨테이너를 보여준다는 뜻이다. (-a를 빼면 실행 중인 컨테이너만 보인다.)

docker ps -a

 

도커를 실행한다.

docker start test_proj

 

#참고 -  create와 start를 동시에 할 경우 run 명령어를 사용한다.

 

작동 로그를 확인한다.

-f 옵션은 컨테이너 내부에 로그를 지속적으로 보여줄 때 사용한다.

docker logs -f test_proj

로그를 벗어날 때에는 Ctrl + C 를 사용한다.

 

컨테이너 안의 리눅스 환경을 확인하려면

// 일반 이미지 기반 컨테이너
docker exec -it test_proj /bin/bash

또는

// alpine이나 slim 이미지 기반 컨테이너
docker exec -it test_proj /bin/sh

 

접속이 된 것을 확인할 수 있으며 도커파일의 WORKDIR로 시작하는 것을 볼 수 있다.

 

해당 컨테이너에서 나갈 때에는 exit를 입력한다.

 

웹에서 확인해보자.

자신의 퍼블릭 아이피로 접속해보면

 

아래와 같이 나오면 성공이다.

 

 

+ Recent posts