개발이 좋아서

    Dockerfile 활용해 이미지 직접 만들기

    Dockerfile 활용해 이미지 직접 만들기

    Dockerfile - Docker 이미지를 만들게 해주는 파일이다. FROM - 베이스 이미지를 생성하는 역할을 한다.- Docker 컨테이너를 특정 초기 이미지를 기반으로 추가적인 셋팅을 할 수 있다. 여기서 얘기한 '특정 초기 이미지'가 곧 베이스 이미지이다.# 문법FROM [이미지명]FROM [이미지명]:[태그명] JDK 17 베이스 이미지로 컨테이너 띄워보기# JDK 17FROM openjdk:17-jdk- 반드시 Dockerfile 로 만들어야 한다. $ docker build -t my-jdk17-server .- Dockerfile로 이미지 생성하는 문법- Dockerfile을 만든 경로에서 명령어 입력한다. 그래서 뒤에 . 을 찍어 상대경로로 맞추어준다. $ docker run -d my..

    Docker Volume(도커 볼륨)을 활용해 데이터 유실 방지하기

    컨테이너가 가진 문제점- 프로그램에 기능이 추가되면 새로운 이미지를 만들어서 컨테이너를 실행시켜야 한다. 이 때, Docker는 기존 컨테이너에서 변경된 부분을 수정하지 않고, 새로운 컨테이너를 만들어서 통째로 갈아끼우는 방식으로 교체를 한다. 이런 특징 때문에 기존 컨테이너를 새로운 컨테이너로 교체하면, 기존 컨테이너 내부에 있던 데이터도 같이 삭제된다. Docker Volume(도커 볼륨) - 도커 컨테이너에서 데이터를 영속적으로 저장하기 위한 방법이다.- 볼륨은 컨테이너 자체의 저장 공간을 사용하지 않고, 호스트 자체의 저장 공간을 공유해서 사용하는 형태이다. 볼륨을 활용해 MySQL 컨테이너 띄우기1. MySQL 컨테이너 띄우기$ cd /Users/zoaseo/Documents/Develop$ m..

    Docker CLI 익히기

    이미지 관련 CLIdocker pull nginx //이미지 다운받기docker pull nginx:stable-alpine3.19-perl //뒤에 태그명을 넣으면 해당 버전을 다운받을 수 있다.docker image ls //다운받은 이미지 조회docker image rm xxxxx //이미지 삭제//뒤에 이미지 ID를 적으면 된다. ID가 길어서 일부만 적어도 해당 ID의 이미지를 삭제해준다. ID대신 명을 입력해도 된다.docker image rm -f xxx //중단된 컨테이너의 이미지를 삭제한다.docker image rm $(docker images -q) //컨테이너에서 사용하고 있지 않은 전체 이미지를 삭제한다.docker image rm -f $(docker images -q) //중단..

    Docker란?

    Docker를 왜 쓰는 것일까?- 이식성: 특정 프로그램을 다른 곳으로 쉽게 옮겨서 설치 및 실행할 수 있는 특성 Docker의 장점매번 귀찮은 설치 과정을 일일이 거치지 않아도 된다.항상 일관되게 프로그램을 설치할 수 있다. (버전, 환경 설정, 옵션, 운영 체제 등)각 프로그램이 독립적인 환경에서 실행되기 때문에 프로그램 간에 서로 충돌이 일어나지 않는다.Docker - 컨테이너를 사용하여 각각의 프로그램을 분리된 환경에서 실행 및 관리할 수 있는 툴이다. 컨테이너(Container) - 하나의 컴퓨터 환경 내에서 여러개의 미니 컴퓨터 환경을 구성할 수 있는 형태이다. 여기서 얘기하는 미니컴퓨터를 보고 Docker에서는 컨테이너(Container)라고 부른다. 컨테이너(Container)의 독립성디스..

    파일 및 이미지 업로드 (S3)

    파일 및 이미지 업로드 (S3)

    S3 - 파일 저장 서비스이다. 1. S3 버킷 생성하기- 버킷(Bucket) : S3에서 여러 개의 저장소를 만들 수 있다. 여기서 하나의 저장소를 버킷(Bucket)이라고 부른다.- 객체(Object) : S3에 업로드한 파일을 보고, S3에서는 파일이라 부르지 않고 객체(Object)라고 부른다. 즉, 객체란 S3 버킷에 업로드된 파일을 의미한다. 2. 버킷에 정책 추가하기- 정책(Policy) : 권한(Permission)을 정의하는 JSON 문서를 의미한다. AWS는 기본적으로 대부분의 권한이 주어져있지 않다. AWS의 특정 소스에 접근하려면 권한을 허용해주어야 한다. 권한을 허용할 때 작성해야 하는 것이 정책이다. 3. S3에 파일 업로드할 수 있도록 IAM에서 액세스 키 발급받기- 기본적으로..

    데이터베이스 연결하기 (RDS)

    데이터베이스 연결하기 (RDS)

    RDS(Relational Database Service) - 관계형 데이터 베이스 서비스이다. RDS 생성하기- RDS에서 데이터베이스를 생성한다. 보안 그룹 설정하기 파라미터 그룹 추가하기- 편집에서  character_set_client / character_set_connection / character_set_database / character_set_filesystem / character_set_results / character_set_server 에 utf8mb4로 수정해서 변경 사항 저장- 편집에서 collation_connection / collation_server 에 utf8mb4_unicode_ci로 수정해서 변경 사항 저장- 편집에서 time_zone 에 Asia/Seoul로..

    HTTPS 연결하기 (ELB)

    HTTPS 연결하기 (ELB)

    ELB(Elastic Load Balancer) - 트래픽(부하)을 적절하게 분배해주는 장치이다. 로드밸런서(Load Balancer)라고 부른다. SSL/TLS - HTTP를 HTTPS로 바꿔주는 인증서이다.- SSL/TLS 인증서를 활용해 HTTP가 아닌 HTTPS로 통신할 수 있게 만들어준다. HTTPS를 적용시켜야 하는 이유?보안적인 이유 - 데이터를 서버와 주고 받을 때 암호화를 시켜서 통신을 한다.사용자 이탈 - 믿음직스럽지 못하다고 느낀다.※ HTTPS 인증을 받은 웹 사이트가 백엔드 서버와 통신하려면, 백엔드 서버의 주소도 HTTPS 인증을 받아야 한다. 따라서 백엔드 서버와 통신할 때도 IP 주소로 통신하는 게 아니라, HTTPS 인증을 받은 도메인 주소로 통신을 한다. ELB 세팅  E..

    도메인 연결하기 (Route53)

    도메인 연결하기 (Route53)

    Route53 - 도메인을 발급하고 관리해주는 서비스이다. (DNS 서비스)- IP 주소에는 HTTPS 적용을 할 수가 없다. 도메인 주소가 있어야만 HTTPS 적용을 할 수 있다. 이 때문에 특정 서비스를 운영할 때 도메인은 필수적으로 사용하게된다. EC2 에 서버를 띄운다. 도메인 등록

    백엔드 API 서버 배포하기 (EC2)

    백엔드 API 서버 배포하기 (EC2)

    배포 (Deployment)배포(Deployment) - 다른 사용자들이 인터넷을 통해서 사용할 수 있게 만드는 걸 의미한다. EC2 (Elastic ComputeCloud) - 컴퓨터를 빌려서 원격으로 접속해 사용하는 서비스이다.  - AWS EC2는 백엔드 서버를 배포할 때 주로 사용- 프론트엔드 웹 페이지는 AWS EC2보다 vercel, netify 또는 AWS S3를 사용 리전(Region) - 인프라를 지리적으로 나누어 배포한 각각의 데이터 센터를 의미한다. - 각 리전은 고유의 이름을 가지고 있다.- 애플리케이션의 주된 사용자들의 위치와 지리적으로 가까운 리전(Region)을 선택하는 것이 유리하다.- 리전(Region)마다 EC2가 따로따로 관리가 되고 있다. 인스턴스 - EC2에서 빌린 ..

    API 예외 처리 - 스프링이 제공하는 ExceptionResolver

    import lombok.AllArgsConstructor;import lombok.Data;@Data@AllArgsConstructorpublic class ErrorResult { private String code; private String message;}import hello.exception.exception.UserException;import hello.exception.exhandler.ErrorResult;import lombok.extern.slf4j.Slf4j;import org.springframework.http.HttpStatus;import org.springframework.http.ResponseEntity;import org.springframework.we..