최종 프로젝트 시작 주
시간이 정말 빠르게 지나 마지막 프로젝트를 새로운 팀 멤버들과 작업 하는 것을 앞두고 있습니다.
기본적인 코호트 진행에 대한 회의만 진행한 상태이지만 내일부터 본격적으로 진행될 프로젝트에 벌써부터 설레는 마음입니다.
WIL 작성은 소홀히 했던면이 있었는데 조금 더 시간 배분을 잘해서 이번 주부터 빠짐없이 작성하고 작성한 내용은 꼭 스스로에게 도움이 될 수 있게 관리하겠습니다.
이번주에 진행 한 것
월 :
- 오늘 우리 하루는 프로젝트 Front Layout 재설정
- 맨파워와 프론트 숙련도 부족으로 난항
화 :
- 월요일 내용과 동일 cyber punk 형태로 구현중
수 :
- Project Database 맵핑
목 :
- Project (인공지능 유화 만들기) 발표회 참여
금 :
- 마지막 프로젝트 조 배정 및 초기 약속 설정
- Docker 1주 차 강의 완강
토 :
- Docker 2주 차 강의 완강
일 :
- Docker 3주 차 강의 완강
이번주 학습 내용 요약
- 몽고 디비 사용하기 : 생성
- docker run --name mongo_db -p 27017:27017 -d mongo
- Robo 3T를 사용해서 DB에 데이터 작성 용의
- docker ps 명령어로 process 실행 상황 확인 가능
- named volume 사용해서 DB 데이터 유지하기 : 유지
- docker volume create memo (memo라는 볼륨을 생성함)
- docker volume inspect memo (memo 볼륨의 정보를 볼 수 있음)
-mongodb에 named volume 연결 : 연결
- docker run -p 27017:27017 -v memo:/data/db mongo
몽고 디비와 앱을 연결하여 필요한 정보가 volume에 저장되어 남아있게 함, 재실행하였을대 위 명령어를 쳐주게 되면 종료 시 사라졌던 데이터를 다시 부를 수 있음
Docker bind mount는 새로 이미지를 생성하고 컨테이너를 다시 띄우는 작업을 줄여주는 기법이다.
- bing mount 명령어
- docker run -v "$(pwd)/templates:/templates" -p 80:5000 nmdkims/docker-memo:version2
위 방법대로 실행을 하게 되면 도커에 있는 이미지를 이용하여 서버를 띄워놓은 상태에서도 파이 참에서 실행한 것 같이 html 파일 변경사항이 이미지 생성하여 재실행을 하지 않았는데도 불구하고 실행되는 것을 볼 수 있다.
- Docker network
- Docker 안에서 여러 개의 container 연결하기 중요한 개념
- docker network create memo
- docker run -d -p 27017:27017 --network memo --network-alias mongo mongo (강의 자료 이상함)
- docker run -it --network memo nicolaka/netshoot (네트워크가 제대로 설정되었는지 확인하는 툴)
- app.py에 DB link의 localhost -> mongo로 변경 여기서는 위에 alias mongo설정이 선행되어야 함
- docker build -t nmdkims/docker-memo:version3. (이미지를 다시 생성)
- docker run -d -p 80:5000 --network memo nmdkims/docker-memo:version3 (실행 시 nework를 분여서 실행)
- Docker container의 리소스 사용량 제한
- 리소스 사용량 제한이 없으면 한 개의 컨테이너에서 cpu의 모든 리소스를 사용하여 다른 container가 실행되지 않을 수도 memory가 부족할 때 자동으로 종료되는 process에서 정말 필요한 process가 있을 수도 또 이것과는 다르지만 다른 문제가 생길 수 있다.
- docker run -i -m 10m python:3.8
- docker run -i --cpus=0.5 python:3.8
- Docker compose 여러 컨테이너를 편리하게 실행
- docker-compose up -d
- cocker-compost down
version: "3.9"
services:
flask:
build:
context: .
ports:
- 5000:5000
#--------------- 위에 내용 만들어서 사용 -------------
mongo:
image: mongo
ports:
- 27017:27017
#--------------- 이미 있는 이미지를 사용 -------------
- Volume을 추가하여 저장 내용 유지시키기 yaml을 이용
version: "3.9"
services:
flask:
build:
context: .
volumes:
- ./templates:/templates
ports:
- 5000:5000
#--------------- 위에 내용 만들어서 사용 -------------
mongo:
image: mongo
volumes:
- mongo:/data/db
ports:
- 27017:27017
#--------------- 이미 있는 이미지를 사용 -------------
volumes:
mongo:
#--------------- 위 두줄 갑자기 적은 이유 물어보기 -------------
- 사용하지 않는 리소스 정리하기
- rm
- docker system prune -a
- TIP
#FROM python:3.8
FROM python:3.8-slim
이미지를 만들 때 실행에 필요한 내용만 포함한 슬림 베이스 이미지를 사용하면 작은 용량으로 만들 수 있고 이는 속도 향상과 이어질 수 있다.
다른 축소 방법으로 multistage build 활용이 있다.
- AWS 설정
- 기존 설정 한 내용으로 대체
- 기존에는 EC2 접속을 git bash를 이용하고 filezilla를 이용하여 작업하였었는데 이번에는 putty 자료 보고 알아서 깔고 작업하라고 하여서 기존 방식대로 하기로 결정
- Server에서 Docker 설치 하기
- 위에 말한 내용대로 putty는 과감히 사용하지 않고 git bash를 이용하였지만 permission denied 문제 발생
- 해결방법으로는 새로 발급받은 pem 키를 읽기 전용으로 바꾸고 명령어를 dns 사용하는 방식으로
ssh -i "/c/Users/Administrator/Desktop/sparta_lecture/web_upload/nmddocker.pem" ec2-user@ec2-3-34-136-104.ap-northeast-2.compute.amazonaws.com 바꿔서 해결
docker-compose up -d
- CI/CD 개념
Continuous Integration : 여러 개발자들이 함께 개발을 할 때 코드가 잘 작동하는지 확인
Continuous Deployment : 반영된 소스코드가 실제 서비스에 자동으로 반영되게 하는 것
- github action
- github action를 정의하는 기본 6가지 용어
- Workflows: 자동화 하려고 하는 과정
- 한 개 또는 여러 개의 job으로 구성되며, event에 의해서 시작
- 빌드, 테스트, 릴리즈, 배포 등의 작업이라고 생각
- Events : workflow를 trigger 되는 행동
- push, pull request, cronjob 등
- Jobs: 동일한 runner에서 실행하려고하는 여러 개의 step
- Steps: job을 구성하는 한개의 커맨드로 action이거나 shell command로 구성
- Actions: 다른 곳에서 정의된 커맨드
- Runner: Job이 실행되는 환경
- Workflows: 자동화 하려고 하는 과정
이번주를 보내며 아쉬웠던 점
- 티스토리 TIL 작성시 GIThub에 올라갈 수 있게 만들기, 장고 클론 코딩 위주로 실습 시작 등 우선 순위가 뒤로 밀린 작업들을 전혀 시행하지 못함 - 도커 수업에 CI/CD 내용이 있어 향후 구현에 도움이 될것으로 생각됨
- 유화생성 인공지능 프로젝트의 완성도가 떨어지고 프로젝트가 잘 안되고 있는 상황에서 시간과 문제점에 쫓기면서 스트레스 관리가 안됨
- 프로젝트에 매몰되어있을때 다른 학습이 제대로 되지 않음
다음주 목표
- TIL은 간단하게 매일매일 작성
- 스파르타 강의 조금씩 남은 부분 전부 듣고 정리
- 아침에 일어나서 정해진 루팅 꼭하기
- 백엔드 + 프론트엔드 공부도 시작하기
- 백준 알고리즘 문제 하루에 한개씩 풀기
'DevLog' 카테고리의 다른 글
[Setting]개발 셋팅 후 실습 참고 자료 (0) | 2022.03.10 |
---|---|
[Setting]개발환경 셋팅 A to Z (0) | 2022.03.09 |
[PYTHON] 가상환경 사용하기 (0) | 2022.02.10 |
[PYTHON] path 환경 변수 설정 (0) | 2022.02.10 |
[내일 배움캠] 깃허브 Profile 만들기 & 꾸미기 (0) | 2022.01.21 |