Post

카카오 소셜로그인, 도커

카카오 소셜 로그인

  • kakao Developer

    1. 내 애플리케이션 등록
    • 애플리케이션 추가하기 클릭

    • 앱 이름, 사업자명 필수로 등록

    1. 카카오 로그인 설정
    • 내 애플리케이션 > 제품 설정 > 카카오 로그인

      • 카카오 로그인 활성화

1

    1. web 플랫폼 등록
    • 내 애플리케이션 > 앱 설정 > 플랫폼 > 도메인 입력 후 저장

1

    1. Redirect URI 등록
    • 카카오 로그인 활성화 설정 화면에서 아래로 스크롤
    1. 동의 항목 설정
    • 내 애플리케이션 > 제품 설정 > 동의항목

1

  • 이메일이 활성화가 안 되어있다면

1

  • 개인 개발자 비즈 앱 전환 클릭해서 비즈 앱으로 전환

    1. API에 필요한 Key 확인
    • 내 애플리케이션 > 앱 설정 > 앱 키


🐳 docker.compose 설정

Dokcer로 동일한 컨테이너를 띄워 공통된 환경을 제공📝

Image

  • 컨테이너가 뭐길래 중요한지?
    • 한마디로 정리하면 컨테이너는 서버의 한 종류입니다.

    • 서버는 소프트웨어가 실행되는 하드웨어, 컴퓨터랑 비슷하다고 생각하면 되죠?

  • 모든 회사들은 IT 서비스를 제공하기 위해 소프트웨어를 운영하고 있습니다. 여기서 소프트웨어는 개발자들이 열심히 개발한 작업물이죠!

  • 개발자는 자신의 PC에서 소프트웨어를 개발할 때 소스코드를 임시 소프트웨어로 만들어서 자신의 PC에서 실행하고 테스트합니다.

  • 그러면 개발을 마치고 결과물로 만들어진 소프트웨어는 고객에게 서비스로 제공하기 위해서 개발자의 PC가 아니라 인터넷 어디간에서 실행이 되어야겠죠? 이 소프트웨어가 바로 서버에서 실행이 됩니다.

  • 서버는 회사의 서버실에 있을 수도 있고 클라우드 같은 온라인 서버를 사용할 수도 있습니다. 그런데 pc에서 개발한 소프트웨어는 보통은 메모리 2기가바이트에서 4기가바이트만 있어도 충분히 실행할 수 있는데 서버실에 있는 서버는 사양이 아주 좋습니다. 그래서 보통 32기가나 64기가의 메모리를 가지고 있기 때문에 하나의 서버에서 아주 많은 소프트웨어를 실행해야 합니다.

  • 브라우저 같은 경우 튕기면 다시 실행하면 되지만 회사의 소프트웨어가 다운되면 서비스 장애로 이어지게 되겠죠? 그래서 하나의 서버에서는 하나의 소프트웨어만 실행하는 것이 안전합니다.

  • 그런데 64기가바이트 컴퓨터에서 4기가바이트 소프트웨어를 하나만 실행하면 낭비가 아닐까요..?

  • 그래서 it회사들은 가상화라는 기술을 사용해서 하나의 컴퓨터에서 여러개의 소프트웨어를 실행합니다.

  • 1층짜리 건물주가 됐다고 생각해 보겠습니다. 그런데 이 곳에서 공간을 구분하는 벽이 없어서 임대인을 한명밖에 못받는다고 생각하면 너무 낭비잖아요?
  • 건물은 임대인을 많이 받아서 월세도 많이 받고 상권 활성화도 시켜야되는데 한명만 사는 건물은 너무 비효율적이죠. 서버에서 하나의 소프트웨어만 실행하는 것이 비효율적인 것처럼 말입니다!

  • 그래서 생각한게 임시로 벽을 세워두고 공간을 분리해서 여러명이 사는 집으로 활용을 하는 것입니다. 건물을 서버라고 생각하면 서버도 마찬가지로 임시로 벽을 세워서 소프트웨어가 실행되는 공간을 분리하는 기술이 있습니다. 이 기술을 가상화 기술이라고 부르고요!

  • 가상화 기술을 사용하면 하나의 컴퓨터에서 여러 개의 프로그램을 안전하게 실행할 수 있는 것이죠! 이 가상화 기술을 오래전부터 프로그램을 운영하는 방식이었습니다!

  • 예전부터 VM, 가상 머신 방식을 사용했었는데요. 이 가상머신 방식은 프로그램을 실행하고 프로그램을 업그레이드하는데 시간이 오래걸렸습니다. 돌아와서 컨테이너도 마찬가지로 서버에서 프로그램을 실행하기 위한 가상화 기술입니다.

  • 컨테이너 가상화를 사용하면 한대의 서버에서 여러개의 프로그램을 안전하게 실행할 수 있죠. 그런데 같은 방식인데도 컨테이너가 주목받는 이유는 컨테이너가 기존의 가상화 기술보다 가볍고 빠르기 때문입니다.

  • 건물을 다시 생각해 볼 때 가벽을 치면 벽도 세워야돼고 임대인이 바뀌면 공사도 다시 해야겠죠?

  • 여기서 획기적인 방법을 떠올렸습니다. 임대인이 살 수 있는 컨테이너를 만들어 놓고 입주할 때마다 컨테이너를 통째로 옮겨서 건물 안에 넣는 것이죠. 그러면 공사할 필요도 없이 컨테이너만 안으로 옮기면 되고 입주기간이 끝나면 컨테이너만 통째로 처분해 버리면 되는거죠! 그래서 가상화 기술을 사용할 때 전통적으로 사용하던 가상 머신 방식에서 컨테이너를 사용하는 방식으로 많이 전환하고 있습니다.

  • 정리하자면 컨테이너를 사용하면 한대의 서버에서 여러 개의 소프트웨어를 안전하게 실행할 수 있습니다!

  • 저희 건물에 첫 입주민이 이사를 온다고 할 때 이제 컨테이너를 만들어야 하는데, 저희는 건물을 관리하는 사람이지 컨테이너를 만드는 사람이 아니기 때문에 직접 컨테이너를 만드는 것은 아주 비효율적입니다. 인테리어를 시공 업체에게 맡기는 것처럼 뭐든지 전문가가 존재하겠죠? 따라서 도커가 컨테이너를 관리해 주는 전문가입니다.

  • 저희는 그냥 도커에 컨테이너를 만들어 줘라고 지시만 해주면 됩니다. 번거로운 일들은 도커가 알아서 처리해주기 때문이죠!

  • 정리하면 도커는 컨테이너를 관리하기 위한 일종의 프로그램입니다. 저희는 pc에 도커를 설치하면 컨테이너를 쉽게 다룰 수 있겠죠? 이제 컨테이너 아이디어를 통해 임대 사업이 아주 잘 되었고 건물이 총 3대가 되었다고 가정하고 각각의 건물에 컨테이너를 관리하는 도커 전문가를 한명씩 배치해 놓고 세개의 건물에 컨테이너를 관리하기 시작했습니다.

  • 이제 저희 전화기는 불나기 시작하겠죠? 매일매일 입주자가 들어오고 명령을 지시해야 되는 도커가 3개나 되기 때문이죠. 이대로는 사업을 지속적으로 운영하기 힘들어 보입니다. 그래서 우리는 매니저를 한명 고용하기로 하죠. 이름은 쿠버네티스라고 합니다. 쿠버네티스는 도커가 실행중인 여러대의 서버를 관리하기 위한 도구입니다. 그래서 오케스트레이션 도구라고 부르죠. 오케스트라의 지휘자처럼 여러대의 서버에서 실행 중인 도커에게 지시를 내려줍니다. 이제 저희가 해야 할 일은 책상에 앉아 커피 마시며 쿠버네티스테에게 명령을 하는 것이죠. 쿠버네티스는 아주 똑똑하기 때문에 사소한 명령을 하지 않아도 됩니다. 저희가 원하는 상태만 문서로 정리해두면 쿠버네티스가 알아서 도커들을 통해 컨테이너를 관리해 줍니다.

  • 마지막 정리 🚩

    • 컨테이너를 사용하면 한 대의 서버에서 여러 개의 소프트웨어를 안전하고 효율적으로 운영할 수 있습니다.

    • 도커는 컨테이너를 관리하기 위한 도구로 일종의 프로그램입니다.
    • 쿠버네티스는 서버가 여러대 있는 환경에서 각각의 서버의 도커에게 대신 지시해주는 오케스트레이션 도구입니다.


1. docker-compose.yml 파일 생성 + (Docker Plugin 설치)

1

  • 해당 파일에 원하는 MYSQL_ROOT_PASSWORD, MYSQL_DATABASE, MYSQL_ROOT_USER, MYSQL_PASSWORD 설정

  • 다른 프로젝트에서 3306을 사용중이여서 3307 포트를 사용했습니다! ( 호스트 포트 3307을 컨테이너의 포트 3306에 매핑)


1-1. Docker 설정 생성

1

1

  • docker desktop에서 다음과 같이 palette container가 정상적으로 실행되면 성공!


2. 추가 에러 부분

  • netstat -ano | findstr :3306 : 포트 3306을 사용 중인 프로세스 PID를 출력

  • taskkill /PID <PID> /F : 해당 PID를 입력하면 프로세스를 종료

  • 2-1. 3307로 포트를 변경했기 때문에 cmd에서 mysql을 실행할 때
  • mysql -u root -p -P 3307 -h 127.0.0.1 해당 명령어 사용


3. 실행 방법

    1. docker-compose -f C:\Users\user\palette\docker-compose.yml -p palette up -d db
    • cmd에서 해당 명령어 실행
    1. intelliJ에서 해당 버튼 실행

1


4. 변경한 부분

  • yml 파일 url, db properties - port, password, database, env - password 수정


5. 포트 충돌 에러 해결 방안

mysql이 연결되어있는데 도커 컨테이너 생성 시 3307 포트는 이미 사용 중이라 정상적으로 생성되지 못하고 에러가 발생함.

mysql의 속성이 자동으로 설정되어있어서 실행 할 때 도커의 3307 포트를 이미 사용중이라 에러가 발생하는 것으로 파악함.

  • cmd를 이용해 어떤 프로세스가 3307을 사용중인지 확인
` netstat -anofindstr 3307 ` 입력
  • PID 번호를 확인하여 다음과 같은 명령어를 입력하여 해당 PID를 kill 시킴

` taskkill /f /pid PID` 번호

  • docker desktop에서 Action stop 후 재실행

  • docker mysql 포트 충돌 에러는 https://leenayoung240.github.io/posts/til40/ 해당 링크 확인

This post is licensed under CC BY 4.0 by the author.