분류 전체보기

    [AWS] Elastic Load Balancer(ELB)로 https 설정하기

    [AWS] Elastic Load Balancer(ELB)로 https 설정하기

    도메인 구매해서 백엔드 서버 연결 완료한 이후 프론트까지 같이 연결할 이유가 생겼다 서브도메인 설정해서 내부에서 서비스별 포트포워딩 해주려고 했는데 자꾸 잘 안되길래 https 설정이 안되어서 그런 거 같아 마침 설정하는 김에 블로그 정리까지 시작 📌 HTTPS HTTP Secure 의 약자로 HTTP 프로토콜을 암호화한 버전이다. SSL이나 TLS를 이용해서 클라이언트와 서버 간의 모든 커뮤니케이션을 암호화하여 민감한 정보를 서로 안전하게 주고 받도록 해준다 그래서 가끔 HTTPS 지원 안하고 HTTP만 사용하는 웹사이트들은 보안오류 뜨면서 접근을 차단하는 경우가 꽤 있다 HTTPS 설정이 되어있다면 이렇게 URL 옆에 자물쇠가 뜬다 (크롬 기준) ✨ SSL 인증서 발급 보통 HTTPS를 사용하기 위해..

    [Github] Github Actions로 CI/CD 개발 주기 자동화하기 - 3 (AWS EC2 서버에서 배포)

    [Github] Github Actions로 CI/CD 개발 주기 자동화하기 - 3 (AWS EC2 서버에서 배포)

    2편에 이어서 3편도 계속 EC2 와 RDS 프리티어를 구매한 후 세팅까지 완료 자세한 세팅은 나중에 시간 나면 올려보도록 하겠읍니다... 💻 작업 환경 Windows + MacOS AWS EC2 + RDS Spring Boot (Gradle) PostgreSQL Redis Docker 🚀 실제 운영 서버에 배포하기 사실 실 배포는 아니지만 어쨌든 개발 서버와 운영 서버를 통합했기 때문에 운영 서버라고 하는게 맞겠지 Deploy 전용 레포지토리를 만들어주고 프록시를 위한 nginx와 쉘 스크립트를 셋팅해준다 📝 deploy.sh #!/bin/bash # Installing docker engine if not exists if ! type docker > /dev/null then echo "docker..

    [Github] Github Actions로 CI/CD 개발 주기 자동화하기 - 2 (스프링 Gradle 빌드 + 도커 푸시)

    [Github] Github Actions로 CI/CD 개발 주기 자동화하기 - 2 (스프링 Gradle 빌드 + 도커 푸시)

    서버를 어떻게 효율적으로 띄울까 하다가 여러 방식을 찾아보았는데 개발 서버와 운영 서버를 방식이 가장 일반적이었다 하지만 돈없는 가난한 대학생은 여러 서버를 띄울 형편이 안되니... 로컬에서 테스트 코드까지 빡세게 돌린 것들만 하나의 운영 서버에 띄우기로 결심했다 고로 프론트엔드, 백엔드, 배포 레포지토리 3개로 나누었고 아키텍쳐는 다음과 같다 📚 서비스 아키텍쳐 아직 프론트는 건들지 않아서 백엔드 서버와 배포 단계만 진행중이다 backend/main 브랜치에 push가 일어나면 깃헙 액션을 통해 스프링 도커 이미지를 빌드해 도커 허브에 push 한다 이후 deploy/main 브랜치에 push가 일어나거나, 직접 action 을 실행시키면 배포 쉘 스크립트 및 docker-compose를 통해 배포가 ..

    [Docker] docker compose로 다중 컨테이너 연결 시 Connection to localhost:5432 refused 에러

    [Docker] docker compose로 다중 컨테이너 연결 시 Connection to localhost:5432 refused 에러

    도커 컴포즈로 Spring Boot + PostgreSQL 다중 컨테이너를 띄워서 연결하던 중 발견한 오류 일단 결론부터 말하자면 도커에 대한 이해가 얕아서 생긴 오류 알고보면 정말 별 것도 아닌 오류이지만 도커 초심자는 반드시 거쳐가는 오류가 아닐까 싶다..,, 장장 4시간의 삽질 🔨 작업 환경 Spring Boot (Gradle) Redis PostgreSQL PgAdmin 💥 원인 찾기 org.postgresql.uti.PSQLException: Conntection to localhost:5432 refused. Spring에서 PostgreSQL 연결 시 호스트나 포트를 잘못 찾아서 연결할 수 없는 오류이다 말 그대로 db 주소를 잘못 입력했다는 거다 📌 변경 전 파일 📝 docker-compo..

    [Github] Github Actions로 CI/CD 개발 주기 자동화하기 - 1 (깃헙 액션 사용법)

    [Github] Github Actions로 CI/CD 개발 주기 자동화하기 - 1 (깃헙 액션 사용법)

    🔍 CI / CD ? 📌 CI (Continuous Integration) 지속적인 통합 [코드작성 -> 테스트 -> 빌드 -> 배포 -> 버그수정] 이라는 일련의 사이클을 단축시키고 자동화시키는 방법 📌 CD (Continuous Delivery 또는 Continuous Deployment) 지속적인 배포 어플리케이션에 적용한 변경 사항을 테스트를 거쳐 레포지토리에 업로드 되는 것 Continuous Delivery 는 마지막 단계인 개발환경에서 운영환경으로의 배포를 개발자가 수동으로 해줌 Continuous Deployment 는 이러한 수동 처리 없이 자동으로 운영환경 배포까지 자동으로 해줌 Github Actions 는 이러한 CI/CD를 가능하게 해주는 툴 중 하나이고 Jenkins, Travi..

    [Docker] docker compose 사용해서 다중 컨테이너 띄우기

    [Docker] docker compose 사용해서 다중 컨테이너 띄우기

    📝 Reference 📚 도커, 컨테이너 빌드업! - 이현룡 📌 docker compose 를 사용하는 이유 컨테이너가 늘어나면 늘어날 수록 docker run 으로 실행해야 할 명령어 수가 많아지며 특히 각각의 컨테이너에 설정할 플래그가 많아질수록 더욱 더 복잡해진다 이를 하나로 묶어서 한번에 서비스를 올리고 관리할 수 있도록 해주는 도구가 도커 컴포즈 각 컨테이너는 독립된 기능을 가지고 공통 네트워크로 구성되어 컨테이너 간 통신이 쉽다 다만 다양한 관리 기능은 없어 실제 운영 환경에서는 쿠버네티스를 사용하는 것이 더 좋다 📜 docker compose 파일 작성 루트 폴더에 docker-compose.yml 또는 docker-compose.yaml 파일을 생성한다 도커 컴포즈 파일은 yml(야믈) 코..

    [Docker] Dockerfile 명령어로 스프링 프로젝트 도커 이미지 빌드 및 푸시

    [Docker] Dockerfile 명령어로 스프링 프로젝트 도커 이미지 빌드 및 푸시

    프로젝트 진행하면서 배포를 직접할 일이 생겼다 보통 잘하는 팀장님이 배포 셋팅을 미리 해줘서 편하게 작업을 했었는데 막상 직접 하려니까 쉬우면 쉽고 어려우면 어려운 복잡한 일이었다 이 글은 도커와 AWS를 공부하면서 참고하기 위해 작성해보는 도커를 이용한 배포 과정, 그 중에서도 Dockerfile 에 대한 작성법이다 📝 Reference 📚 도커, 컨테이너 빌드 업! - 이현룡 📜 Dockerfile 어떠한 컨테이너를 위해 필요한 모든 설정을 기록한 파일 도커 파일을 빌드하면 이미지가 자동으로 생성된다 도커 파일을 통해 특정 컨테이너를 빌드하고 배포하기 위한 과정들을 자동화 할 수 있게 된다 💥 Dockerfile 작성 시 고려할 점 컨테이너 서비스의 장점인 경량 가상화 서비스를 지향하기 위해 최소한의..

    [Spring] 스프링 부트 프로젝트에서 dotenv 환경변수 파일 사용하기

    [Spring] 스프링 부트 프로젝트에서 dotenv 환경변수 파일 사용하기

    스프링 프레임워크를 사용하는 웹앱 프로젝트를 진행하면서 환경변수를 저장하기 위한 방법을 검색해보았다 그런데 보통 .env.properties 파일을 만들어서 그 안에 있는 값을 또 프로퍼티 빈을 만들어서 불러오더라 이렇게 하더라도 비밀키 값 같은 거는 .gitignore 에다가 등록을 하면 되지만 다른 언어를 사용하다가 온 입장에서는 굳이 이렇게 해야하나 싶어서 뭔가 답답하다고 해야하나 그래서 이 프로젝트에서는 .env 파일을 사용해서 환경변수를 불러오는 방법을 도입시켜보았다 📝 /.env PORT=8000 JWT_SECRET_KEY="MYSUPERSECRETJWTKEY" ... 우선 프로젝트 루트 디렉토리에 .env 파일을 만들었다 📝 /.gitignore ... .env* git을 사용중이라면 반드시..