TIL 2022.11.08 ~ 11.13

김경민·2022년 12월 30일

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
안녕하세요

5개의 댓글

comment-user-thumbnail
2025년 5월 28일

You make so many great points here that I read your article a couple of times. Your views are in accordance with my own for the most part. This is great content for your readers. thc vape pen cartridge

답글 달기
comment-user-thumbnail
2025년 6월 16일

You there, this is really good post here. Thanks for taking the time to post such valuable information. Quality content is what always gets the visitors coming. caps psychedelic amanita gummies review

답글 달기
comment-user-thumbnail
2025년 6월 16일

Thanks for the blog loaded with so many information. Stopping by your blog helped me to get what I was looking for. 해외선물 솔루션

답글 달기
comment-user-thumbnail
2025년 7월 9일

Fine Posting, We're an important believer around writing commentary for web pages so that you can allow the site freelancers realise that they’ve increased a little something valuable so that you can the ether! IPTV UK

답글 달기
comment-user-thumbnail
2025년 7월 16일

When i got onto your blog site though putting attention simply just a little bit submits. Pleasant strategy for future, I will be bookmarking at a time get ones finish springs up. Drawer Cup Pulls

답글 달기