241115 TIL - oreno turn wk1 (3)

LIHA·2024년 11월 15일
0

내일배움캠프

목록 보기
111/117
post-thumbnail

뼈대잡기

241115 오늘의 할일

constants, config, .env 만들기


Docker Desktop에서 docker deploying wsl2 distributions error가 뜬다면 -> 게임 보안 프로그램이나 게임을 끄자

나의 경우는 로아를 같이 켜고 있어서 문제였다. 도커 엔진이 계속 멈췄는데 로아를 끄자마자 엔진이 멀쩡히 돌아갔다. 팀원분들도 설치 중 어려움을 겪으셨는데 LOL의 뱅가드와 충돌이 나기 때문이라고.

동혁 튜터(?)님의 Docker 기초세팅 강의

동혁님도 생활코딩 유튜브를 보셨다고 하니 혹시라도 모르겠으면 찾아보도록 하자.
오늘의 강의 세션(?)은 대충 다음과 같다.

docker 어디서 왔는가 - linux
왜 쓰는가
image
container
volumes
docker compose

도커 왜 써요?

개발자가 프로그램 필요하다는 사람 찾아가서 git 깔고 git pull 하고 npm install 하고 할 수 없기 때문에, 그 설치 환경과 이것 저것을 다 한 세트로 담아놓은것.

리눅스에서 시작된 이유는 리눅스 커널이 컨테이너화 하는 기술을 갖고 있어서 거기에서 온것이기 때문.

  • Images - config들이 모여있는 곳(?)
    OS 환경 같은걸 저장하는 걸 이미지라고 부른다. 우리 CD스페이스나 데몬 쓸때도 CD 이미지 라고 했던것 처럼, 데이터와 실행 환경들이 스냅샷마냥 딱 고정되어 있어서 이미지라고 부름.

  • Environment variables에서 초기 비밀번호를 설정해줘야 한다
    초기설정은 도커 문서를 보거나 도커 환경변수 설정 이라고 검색하면 될 것.

  • 이미지 Run 시켰을 때의 PORT는 외부에서 몇번 포트로 들어올 것인지를 정해주는 것
    그래서 Docker는 외부 PORT와 내부 PORT가 별도로 있다. 왜냐? 내부 포트가 노출되면 해킹의 위험이 있기 때문. 동혁님은 실제로 해킹을 당하신 적이 있다고.

그래서 Docker MySQL 설정을 한 번 도전해보자

참고 블로그

도커는 기본적으로 CLI 기반이라 cmd를 켜서 명령 프롬포트에서 실행할 수 있다. 물론 docker desktop에서 해도 된다.

일단 cmd에서 docker pull mysql 입력해서 도커 이미지를 땡겨와보자.
그리고 다음과 같이 입력하면 실행시킬 수 있다.

docker run --name mysql-container -e MYSQL_ROOT_PASSWORD=비밀번호 -d -p 외부포트번호:내부포트번호 mysql:latest
ex)

-> -e는 환경변수 설정해주겠다는 얘기
-> -d는 백그라운드에서 실행하겠단 얘기
-> -p는 포트번호를 설정해주겠다는 얘기. 외부포트:내부포트 순으로 써주면 ok

혹은 docker desktop에서 이걸 써도 된다. 이때 환경변수에서 MYSQL_ROOT_PASSWORD 라는 이름을 넣고 비밀번호를 설정해주자.

이때 설정한 비밀번호는 이후 docker를 접속할 때 쓰이므로 기억해두어야 한다.
여기서 제대로 실행이 되었다면 컨테이너의 ID가 표시된다.

이후 docker start mysql-container 라고 입력해주자. mysql-container 라고 뜨면 성공.

시작

$ docker start mysql-container
mysql-container

멈춤

$ docker stop mysql-container
mysql-container

재시작

$ docker restart mysql-container
mysql-container

  • 그리고 나면 cmd에서 docker exec -it mysql-container bash 라고 쳐도 되고, docker desktop에서 exec 탭으로 이동해도 된다. 그후 mysql -u root -p 라고 입력하면 비밀번호를 쳐달라고 나온다. 리눅스 특성 상 타이핑해도 보이지 않는게 정상이니 믿음을 갖고 기도메타로 타이핑 후 엔터하자.

    비밀번호가 맞다면 위와 같이 나온다.

  • 그리고 나면 create database (원하는 DB이름) default character set utf8; 을 입력하자. 문제가 없다면 DB가 생성될 것. 나는 USER_DB와 GAME_DB를 만들고 싶으니 다음과 같이 입력했다. 자바스크립트를 쓰다보면 세미콜론에 무감각해지지만 꼭 붙여야 실행되니 주의하자!

    create database USER_DB default character set utf8;
    create database GAME_DB default character set utf8;

    이렇게 되면 RDS를 쓰지 않고 도커로 일종의 로컬DB를 띄울 수 있게 된 셈.

DB를 사용하고 싶으면 use (DB이름); 하면 그 DB로 전환된다

일종의 git checkout 같은 기능.

liveshare를 켜니까 노란 박스가 쳐져요 -> 설정에서 Editor: Unicode Highlight : Non Basic ASCII를 false로 놓자

참고 블로그

라이브쉐어를 하다 보니 이렇게 노란 박스가 마구마구 쳐진다는 팀원들의 고충이 있어 찾아보았다.

이걸 false로 돌리면 OK

payload의 oneof 케이스는 - ???

TCP School

C2S는 LE, S2C는 BE이라면 - 어떻게 읽어오고 써줘야 하는걸까?

상현님이 말씀하시길 '이전 프로젝트를 해봤더니 LE가 거꾸로 쓰는건 맞는데, 만들어지는 버퍼 객체는 결국 같더라'는 말씀을 해주셨다. 🤔?? 이해하지 못했다.
내가 이해하지 못한 점 - 클라에서 LE로 쏘면 우리도 readUIntLE로 읽어야 하는거 아닐까? 라는 의문.
-> 내가 생각한 것은 클라에서 LE로 오면 LE로 read 해주고, 서버는 BE로 쏴주니 BE로 write 해주는 것이 맞지 않나~ 하는 것이었다.

팀장님의 소신발언 - 우리 패킷이름 그대로 따와서 대소문자 바꾸고 언더바 넣어도 되지 않았을까

맞는 말씀이다. 하지만 전 바보에요 팀장님... 알고리즘 할 줄 몰라... 낑낑...

트러블슈팅

enum은 lookupType() 이 아니라 lookupEnum() 으로 따로 for문을 돌아줘야 한다.

protobuf 파일 로드 중 오류가 발생했습니다. Error: no such type: enum.GlobalFailCode 라는 메시지가 발생했다. 이건 뭐지?

permission denied 127.0.0.1? - port와 host 위치를 바꿔 쓴 탓이었다...


net stop winnat / net start winnat을 해줘도 그대로였다. 대체 뭐가 문제일까 고민하던 차에 허탈한 이유를 알게 됐다.


PORT, HOST 순서인데 내가 이걸 뒤집어서 써서 되지 않는 것이었다...


주말 룰 - 일일 4시간

주말은 사전캠프처럼 최소 4시간 이상 공부할 것을 약속했다.

  • 이번 주말에 공부하기로 한 것 - 플리마켓 패킷 톺아보기
profile
갑자기 왜 춤춰?

0개의 댓글