TIL 2022.11.08 ~ 11.13

김경민·2022년 12월 30일
0

TIL

목록 보기
3/15
post-thumbnail

[TIL/73일차/11.08] KPT ft. 내배캠

상을 치르고 온 날

프로젝트 종료 후 kpt회고

https://tikitaka205.tistory.com/102

[TIL/74일차/11.09] 팀 회의 ft. 내배캠

11/9 회의록

❗-팀 약속 (이것만은 지키자)-

1. 아침에 내가 할 것을 계획하고 간단히 브리핑한다. 저녁에는 하루 일과 브리핑하기

2. 팀원들의 수준을 생각한 간단한 퀴즈 1문제

3. 사소하더라도 팀적인 문제 항상 공유하기

준호

프로젝트 전 목표

  • DRF 기초 완벽 마스터
  • 모델 참조 방법 다양하게 써보기(main)
  • detail 페이지 수정 삭제 기능 마무리 및 프론트 연결
  • 승인된 스터디 보여주기 추가
  • 스터디 모임 버튼 버그 해결(색깔) - 이슈로도 올리면 좋을 것 같아요.
  • 1개의 기능 추가시 바로 commit 로그 남기기
  • 모임 인원 초과시 게시글 비공개 전환 또는 없애기(상황에 맞게)
  • 모델링 간소화 작업
  • serializer 포함 중복코드 제거 (최대한 중복기능은 줄이기)

시간이 허락한다면 하고 싶은 것 - 프로젝트

  • 익명사용자이름 자동 완성기능
  • QnA 봇

기훈

  • DB 설계 기초인 모델링에 대해 이해와 활용방법을 익혀보기.
  • CRUD를 활용하여 게시글 및 댓글 작성해보기. 😍
  • 위에서 배운 모델링,CRUD를 활용하여 팔로우 기능(참조) 이용해보기.
  • GIT을 활용하여 COMMIT 과정별로 커밋내역 남겨보기.
  • 욕심내지 않고 기초적이면서 필수적인 내용(DRF 기초)에 집중하여 이해하기.
  • DRF를 익히지 못했다면 못한 부분에 힘써보고 다 했다면 위에 표대로 응용에 대해 생각해보기:D

원채

Modeling(프로젝트 전체 이해를 위해 필요)

프로젝트가 계속 이어진다면 이전의 작업들이 돌아가는 방식부터 숙지.

Git을 사용하는 방법

Permission 기능 사용해보기

Js를 통해 Json데이터를 조금 더 유연하게 주고받기

  • 익명사용자이름 자동 완성기능(강추) 오오.. 멋져요 👍

민수

궁극적 목표 : 팀원끼리 소통해서 서로 도우면서 남은기간 효율적으로(중요) 본인의 최고능력을 발휘하기

프로젝트 전 : DRF 기초 - 로그인 부터 시작해서 정말 기초적인 에러응답 세세하게 완벽하게 하는게 목표입니다.

프로젝트 : DRF 기초 - 로그인부터 시작해서 정말 기초적인 에러응답 세세하게 완벽하게 하는게 목표입니다.

정말 시간이 돼서 해본다면 만들어 봤던거 : 이메일인증 비밀번호 변경, 정보수정 / 안만들어본거 : 게시글 아이디에 공부시간에 따른 계급달기(적당한 응용이 될 듯 합니다.)

팀으로 얻어 가고 싶은 것 : github 마스터, 팀원의 장점 하나씩 배우기

계획 : DRF 강의모자란부분 듣기, git 공부하기 👍

경민

프로젝트 기간 전 개인적 목표 : 에러 처리, 리팩토링, 세세한 부분을 채워나가고 배포를 배워서 출시하는 것

프로젝트 기간의 개인적 목표 : 참여 스터디 디테일 페이지, 공부량 순위(재미 요소)

팀으로 얻어 가고 싶은 것 : 문서의 체계화, 깃허브 체계화 등

[TIL/75일차/11.10] 타임 어택 ,토끼반 알고리즘, js ft. 내배캠

타임 어택

토끼반 알고리즘

페이지를 벗어나는 경우 이벤트 처리 : onbeforeunload

블로그

[TIL/76일차/11.11] docker 기초, 알고리즘 ft. 내배캠

Error : It is required that your private key files are NOT accessible by others. This private key will be ignored.

chmod 400 /Users/GyeongminKim/Downloads/Stady_ubuntu.pem

알고리즘

도커 컨테이너와 이미지

[TIL/77일차/11.12] docker(이미지, 컨테이너, 명령어, entrypoint) ft. 내배캠

도커 이미지란?

  • 서버 프로그램, 소스코드 및 라이브러리, 컴파일된 실행 파일을 묶는 형태라고 한다.
  1. 용량은 보통 수백mb~수GB가 넘는다. 하지만 가상머신의 이미지에 비하면 굉장히 적은 용량이다.
  2. 이미지는 상태 값을 가지지 않고 변하지 않는다.(Immutable)
  3. 하나의 이미지는 여러 컨테이너를 생성할 수 있고, 컨테이너가 삭제되더라도 이미지는 변하지 않고 그대로 남아 있는다.
  4. 도커 이미지들은 github솨 유사한 서비스인 도커허브를 통해 버전 관리 및 배포가 가는하다
  5. 다양한 api가 제공되어 원하는 만큼 자동화가 가능하다.
  6. 도커는 도커파일이라는 파일로 이미지를 만든다. 도커파일에는 소스와 함께 의존성 패키지 등 사용했던 설정 파일을 버전 관리하기 쉽도록 명시되어진다.

도커 컨테이너

  • 이미지를 실행한 상태로, 응용프로그램의 종속성과 함께 응용프로그램 자체를 패키징 또는 캡슐화 하여 격리된 공간에서 프로세스를 동작 시키는 기술이다.
  1. 컨테이너는 이미지 레이어에 읽기/쓰기 레이어를 추가하는 것으로 생성/실행된다. 따라서 여러 개의 컨테이너를 생성해도 최소한의 용량만 사용되며, 바뀐 부분을 읽기/쓰기 레이어레 적는다.
  2. 컨테이너는 종료되었다고 해도 메모리에서 삭제되지 않고 남아있다. 삭제하려면 명시적으로 삭제해야함. 즉 종료가 되어도 컨테이너 읽기 쓰기 레이러 또한 그래도 존재하기 때문에 다시 시작할 수 있다.
  3. 컨테이너를 삭제했다는 것은 컨테이너에서 생성한 파일이 사라진다는 것. 데이터베이스라면 그동안 쌓였던 데이터가 모두 사라진다는 뜻
  4. 한 서버는 여러 개의 컨테이너를 가져도 당연히 상관없으며, 컨테이너는 각각 독립적으로 실행된다.
  5. 컨테이너는 커널 공간과 호스트 os 자원을 공유한다.

도커 명령어

컨테이너 생성하기

sudo docker run -d -p 80:80 httpd:latest
#run : 이미지를 사용해 컨테이너를 실행시킵니다.
# -d : 컨테이너를 데몬(백드라운드)으로 실행시킵니다.
# 80:80 : 80번 포트로 접속했을 때 컨테이너에 접근할 수 있도록 포트포워딩을 설정
# httpd:latest : httpd의 가장 최신 이미지를 사용해 컨테이너를 생성합니다.

실행중인 컨테이너 확인하기

sudo docker ps # 실행중인 컨테이너 목록 확인하기
# CONTAINER ID : 컨테이너가 가지고 있는 고유한 id
# IMAGE : 컨테이너가 생성될 때 사용된 이미지
# COMMAND : 컨테이너가 생성될 때 실행되는 명령어
# CREATED : 생성 후 경과 시간
# STATUS : 컨테이너 상태
# PORTS : 사용중인 포트

sudo docker ps -a
# -a : 중지된 컨테이너 목록까지 포함해서 모두 확인하기

다운 받은 이미지 확인하기

sudo docker images
# REPOSITORY : 이미지 저장소 이름
# TAG : 이미지 버전
# IMAGE ID : 이미지의 고유한 id
# CREATED : 이미지 생성일(마지막 업데이트 일)
# SIZE : 이미지 용량

컨테이너 내부로 들어가보기

sudo docker exec -it $container_id /bin/bash
# $containser_id : sudo docker ps를 쳤을 때 확인되는 container_id를 입력합니다.
# /bin/bash : 컨테이너에 접속할 때 사용되는 쉘을 입력합니다.
# 이미지에 따라 /bin/bash라는 쉘이 존재하지 않을 수 있는데, 이 경우에는 /bin/sh를 사용해 접속합니다.

#나오기
exit

도커 컴포즈 명령어

  • 2개 이상의 컨테이너를 관리하기 편하게 해주는 것

도커 컴포즈 설치하기

sudo mkdir -p /usr/lib/docker/cli-plugins
# /usr/lib/docker 경로에 cli-plugins라는 디렉토리를 생성합니다.
# -p : 만약 상위 디렉토리가 없다면 함께 생성합니다.

sudo curl -SL https://github.com/docker/compose/releases/download/v2.11.2/docker-compose-linux-x86_64 -o /usr/lib/docker/cli-plugins/docker-compose
# github에 release 된 docker-compose 파일을 /usr/lib/docker/cli-plugins/ 경로에 다운로드 받습니다.
# v2.11.2는 docker-compose의 버전이며, 최신 버전은 [여기](https://github.com/docker/compose/releases)서 확인 가능합니다.

sudo chmod +x /usr/lib/docker/cli-plugins/docker-compose
# 다운받은 docker-compose 파일에 실행 권한을 부여해 줍니다. +x excute 권한 부여

sudo docker compose version
# docker-compose가 정상적으로 설치되었는지 확인합니다.
# Docker Compose version v2.11.2 정상적으로 설치 된 경우 버전이 출력됩니다.

주의 사항

  • 도커 컴포즈 명령어를 실행할 때에는 현재 경로에 docker-compose.yml파일이 존재하지 않으면 docker compose 명령어 실행이 불가능하다.

docker compose stop VS down

  • down을 하게되면 정지와 동시에 컨테이너를 삭제하는 것으로 데이터도 날아간다는 점을 기억해야한다.
  • 삭제하기 싫다면 docker compose up으로 기동 후, docker compose stop으로 정지하고 docker compose start로 시작해주어야한다.

포트 포워딩이란 - 외부에서 서버의 특정 포트에 접근했을 때 지정한 서비스로 전달해 주는 것을 의미한다.

sudo docker compose logs -f: 로그 실시간 확인 확인하기

이미지 빌드하기

도커 파일이란? docker 의 이미지를 직접 생성하기 위한 용도롤 작성하는 파일이다.

도커 파일은 언제 사용될까?

기본이 되는 이미지를 지정한 후, 특정 패키지를 설치하거나 파일을 추가하는 등의 작업을 통해 사용자가 직접 이미지를 빌드하고 사용할 수 있다.

예로 도커에서 장고를 배포한다고 가정했을 때, 기본 파이썬 이미지를 불러온 후 django 패키지를 pip install한 후 이미지를 생성하게 된다.

Dockerfile 작성하기

# 빌드할 때 사용할 이미지를 지정해줍니다.
FROM httpd:latest

# 현재 경로에 존재하는 index.html 파일을 컨테이너 내부로 복사합니다.
COPY ./index.html /usr/local/apache2/htdocs/index.html

########docker-compose.yml
version: '3.8' # docker-compose.yml에 사용될 문법 버전을 정의합니다.

services:
  example: # 서비스 이름을 지정합니다. 서비스 이름은 컨테이너끼리 통신할 때 사용됩니다.
    container_name: example # 컨테이너 이름을 지정합니다.
    build: . # 현재 경로에 있는 Dockerfile을 사용해 이미지를 생성합니다.
    ports: # 포트포워딩을 설정해줍니다.
      - 80:80 # 외부에서 80 포트로 접속했을 때 컨테이너의 80 포트로 연결해줍니다.
    restart: always # 컨테이너가 종료됐을 때 다시 실행시켜 줍니다.

entrypoint란?

entrypoint란? docker 컨테이너가 생성될 때 기본적으로 실행 할 명령어를 지정해 주는 옵션입니다.

예로, 데이터 베이스를 실행시키기 위해 만든 이미지는, 컨테이너가 생성될 때 데이터베이스 서비스를 실행시켜야 합니다. 이 때 사용되는 옵션이 entrypoint이다.

entrypoint는 Dockerfile과 docker-compose.yml 모두 작성할 수 있습니다.

만약 Dockerfile, docker-compose.yml 모두 entrypoint가 작성되어 있다면 Dockerfile의 entrypoint는 무시되고 docker-compose.yml의 명령어가 우선적으로 수행됩니다.

FROM python:3.9.15

# .pyc 파일을 생성하지 않도록 설정합니다.
ENV PYTHONDONTWRITEBYTECODE 1

# 파이썬 로그가 버퍼링 없이 즉각적으로 출력하도록 설정합니다.
ENV PYTHONUNBUFFERED 1

# /app/ 디렉토리를 생성합니다.
RUN mkdir /app/

# /app/ 경로를 작업 디렉토리로 설정합니다.
WORKDIR /app/

# main.py 파일을 /app/ 경로로 복사합니다.
COPY ./main.py /app/

[WIL/ 11주차] 내일 배움 캠프 11주차 ft. 내배캠

이번 주에 대표적으로 한것

  • 팀원들과 진지한 회고를 통한 팀 방향 토의
  • docker
  • 토끼반 알고리즘

회고

상을 치르고 캠프에 몰입도가 좀 떨어지는 주간이었다. 다시 끌어올려 집중을 해야겠다.

팀원들과 아침, 저녁 미팅을 통해서 서로 배운점, 퀴즈 등을 내고 서로 조언이나 도움을 줄 수 있도록 하여 공부에 동기부여도 되면서 재미있게 하루를 되돌아보며 끝낼 수 있어서 좋은 의견이 모인 것 같다.

다음 주에 할 것

프로젝트 보완, 리팩토링, 배포

알고리즘

기능 추가

profile
적은 대로 된다.

0개의 댓글