[나만무] 회고 : 기술 2

안나경·2024년 5월 31일

나중에 다 적었다가 분야별로 게시글 나눠야지

Git

임의의 브랜치로 push하기

git merge는 모르겠고 branch 개설은 천번했다.

git remote add origin 원격저장소주소

내 로컬에서 origin이라는 이름으로 원격저장소주소를 설정하겠다는 뜻이다.

git add .
git commit -m "커밋 메시지"

이 정도는 다들 알 거고
(변경사항 전부 포함, commit.)

git push -u origin main

요걸 하면 앞에 설정한 origin이라는 저장소에
내 branch main을 넣겠다는 뜻이다.

주의 사항은 현 로컬의 branch 이름과 일치해야한다는 점.
반대로 내 로컬 branch 이름이 ubb 여도 내 branch 이름 그대로 넣어준다.

그래서 내가 만약 임의의 branch를 생성해서 원격저장소에
그 branch 이름으로 생성하고 싶다?

git checkout -b 임의의브랜치이름
git push -u origin 임의의브랜치이름

으로 하면 번듯한 브랜치를 push하게 될것이다.

진행사항은 공유해야하지만 딱히 어느 소속도 아닐 때 유용하다.
(물론 프로젝트는 git을 그렇게 쓰는게 아니고
실제로 git에는 새 기술을 넣었지만 본 서버에는 안 넣을 그런 branch를
고급 기능으로 존재하긴 하는데 잘 모르겠고 빨리하고 싶을때 유용하다.)

error: src refspec anna1 does not match any

라는 문구가 뜬다면 당신의 로컬 브랜치가 anna1이 아니라는 뜻이니
checkout이 잘 되었는지 확인해라!

postman

postman에서 쿠키를 확인하는 요청

요청 헤더에 쿠키 값을 보통 첨부하니 그대로한다.

헤더에 Set-Cookie나 Cookie 헤더를 키로,
값으로 쿠키값을 넣으면 확인해줄 것이다.

NGINX

nginx conf 찾고 vi로 수정하기

보통 nginx는 설치 후
conf 파일을 수정한다.

conf 파일은 vscode에서 열 수 없어 vim이나 nano를 쓸 수 있다.
nano가 쬠 더 단축키가 많긴 한데 편한걸 쓰자.

vim은

  • i로 입력 시작.
  • 입력이 끝나면 :wq 로 종료.
    (w가 write고, q가 quit임.)
    (만약 저장 안하고 끄고 싶으면 강제 종료로, :q! 하면 된다.)

vim으로 파일을 열려면 sudo vi 명령어를 쓰는데,
앞은 권한이 필요해서 sudo를 쓰는 거다.

운영체제마다 conf 위치가 다른데,
로컬이면 그냥 nginx 폴더 안에 있는 nginx.conf를 수정하면 되는데
서버고 그 서버가 리눅스고 당신이 하고자하는게 웹서비스면
sudo vi /var/etc/nginx/sites-enabled/default
(sites-enabled이든 뭐든 sites-로 시작하는 폴더 안에 있는 그거.)
를 수정해야할 것이다.

서버에서 sudo systemctl stop nginx 등으로 nginx를 껐다 켰다했는데
systemctl로 했는진 찾아봐야겠다..
(동료가 알려주면 바쁘니까 그대로 씀.)

알아봐야할 것 :

  • systemctl은 무슨 명령어인가?

Docker compose

서버를 여러개 켜야하고
개발환경 통합을 위해 공부했었는데
결국 카메라 권한을 못 받아와서 서버에서 바로 했지만
다시 생각해도 빡셌다
(Dockerfile만 잘 만들면 되는 문제지만
뭔가 알듯말듯 모를듯 한다는게)

docker-compose.yaml 구성하기

일단 dockerfile을
서버별로 폴더 안에 만들어준다.

실제로는 compose만 있으면 되는지 잘 모르겠는데
난 암튼 dockerfile을 다 만들어주고 compose를 만들었다.

차이는 dockerfile내에서 상세 커맨드를 쓸수 있느냐 마느냐지
compose만 써도 자체적으로 이미지를 지정해서 생성할 수 있다.

예시로 하나의 dockerfile을 살펴보자.

# Python 이미지를 기반으로 한다.
FROM python:3.10-alpine AS flask 
// alphine은 경량화의 일종인데, 웬만하면 쓰지마라. 가벼운 만큼 기본 명령어가 있는게 없어서 설치를 쭉 하거나 안 되는 경우가 종종 생긴다. (물론 alphine이 용량은  더 작음.)

# 작업 디렉토리 설정
WORKDIR /app/server-flask
//이미지 빌드 시 그 운영체제에서 이 디렉토리에서 실행할 거라는 말이다.

# 필요한 파일 복사
COPY server-flask/requirements.txt .
// 이건 내 로컬 환경에 있는 걸 복사하는 거다. .은 현재 경로에 하겠다는 뜻이다.

# Flask 서버 의존성 설치
RUN pip install -r requirements.txt
// flask 경우는 의존성있는 걸 이러한 txt를 만들어 커맨드 자동화를 한다.
// 누군가에게 dockerfile만 제공하는 경우가 아니라면 일일이 설치하는게 편할수도 있다.

# Flask 서버 소스 코드 복사
COPY server-flask/ ./
// node js라면 이 과정 이후에 npm i도 해줘야겠지? RUN 명령어로 하면 된다.

# 최종 이미지 구성
CMD ["flask", "run", "--host=0.0.0.0"]

# 컨테이너가 외부에 노출할 포트 설정
EXPOSE 5000
// 이걸 기준으로 nginx를 구성하면 좋다.

이런식으로 다른 것도 쓰도록 하자.
어려우면 gpt에게 부탁하고 내가 수정하면 된다.
go, nest, flask까지 이미지 빌드하게 되면 살짝 슬퍼진다.
(빡세서)

이제 compose 파일을 보자.

version: '3' // version에 따라 작동이 좀 다르다고 한다.

services: // 내가 실행할 서버 목록.
  client: // 내가 지은 네이밍이니 뭐든 OK.
    build:
      context: .
      dockerfile: Dockerfile // 해당하는 dockerfile로 build한다.
      target: node
    ports:
      - "3000:3000"

 flask_server:
    build:
      context: .
      dockerfile: Dockerfile
      target: flask
    ports:
      - "5000:5000"
    command: ["flask", "run", "--host=0.0.0.0", "--port=5000", "--reload"]

profile
개발자 희망...

0개의 댓글