일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
- rnn
- PytorchLightning
- 코딩테스트
- GIT
- datascience
- Matplotlib
- leetcode
- vscode
- autoencoder
- 네이버AItech
- NaverAItech
- github
- Kubernetes
- GitHub Action
- pytorch
- 백준
- 프로그래머스
- torchserve
- wandb
- docker
- GCP
- FastAPI
- python
- Kaggle
- 알고리즘
- DeepLearning
- FDS
- NLP
- 완전탐색
- pep8
- Today
- Total
목록개발 (38)
Sangmun
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/M09OY/btrYY59hpBe/TDN05CnsBj8ZJqaxxDl4a0/img.png)
구글 클라우드의 compute engine에 간단한 fastapi 어플을 띄우고 이를 github action을 통하여 간단한 CI/CD 환경을 구축하는것을 정리해보고자 한다. Compute engine에 접속할 secret을 github repo에 등록하기 먼저 compute engine에 접속하여 다음과 같은 명령어를 입력하여 rsa key를 생성을 해준다. rsa key 생성은 굳이 compute engine에서 실행하지 않아도 된다. ssh-keygen -t rsa -b 4096 -C [your_email] 다음은 cat으로 생성한 public key를 확인해주고 이를 복사하여 GCP 콘솔의 Compute engine > 설정 > 메타데이터 항목에서 SSH키에 추가를 해준다. 정상적으로 키가 입력..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/wymf4/btrYRSDRBDS/yEvPDBFChQYvmlm4DwOsWK/img.png)
CI/CD 도구로는 많은 것들이 있지만 github action이라는 것도 있다. github action은 github에서 출시한 기능으로 소프트웨어 Workflow 자동화를 도와주는 도구이다. workflow 예시 TEST CODE 배포 Prod, Staging, Dev 서버에 코드 배포 파이썬, 쉘 스크립트 실행 github Repo에 저장된 스크립트를 일정 주기를 가지고 실행 crontab의 대용 setup-python v2가 있음 Github Tag, Release 자동으로 설정 Main 브랜치에 Merge 될 경우 특정 작업 주행 그 외에도 다양한 Workflow를 만들 수 있고 Workflow 템플릿도 커스텀이 가ㅡㅇ Action Marketplace : Awesome Github Actio..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/crmbP7/btrYRVAxp5P/BwLDI8ywkN6w9vJLqgdvz1/img.png)
구글 클라우드는 무료체험하기 서비스가 있어서 처음 결제수단을 등록을 하면 300$의 크레딧을 공짜로 준다. GPU가 달린 서버를 생성하는것 까지는 할 수 없지만 300$내에서 다양한 인스턴스들을 만들어서 규모가 크지 않은 프로젝트는 실습을 할 수가 있다. 가장기본이 되는 compute engine을 하나 만드는 예제를 정리해보고자 한다. GCP에서 Compute Engine 생성 먼저 GCP 콘솔로 이동해서 Compute Engine으로 이동하면 VM 인스턴스 메뉴 윗단에 인스턴스 만들기가 있다. 인스턴스 만들기를 누르면 다음과 같은 옵션들을 선택할 수가 있다. 인스턴스의 이름 리전 그리고 서버의 기본적인 스펙을 정할수가 있다. 예상되는 금액도 계산이 된다. 내가 띄울 예정인 서버는 그닥 기능이 없는 서..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/uyIRL/btrX30BXKaD/ame0FzQD7dB994weYjlKf1/img.png)
Docker Image를 저장하는 Registry는 아래와 같이 있으며 별로도 지정을 하지 않으면 기본적으로 Dockerhub를 사용하게 된다. GCR에 Docker 이미지 푸시하기 먼저 GCP의 Container Registry에 이동해서 확인을 해준다. 현재는 아직 푸시된 이미지가 없기 때문에 아무것도 있지 않다. 다음으로는 로컬에서 gcloud를 이용해서 클라우드에 있는 우리의 프로젝트에 로그인을 한다. 만약에 gcloud sdk가 없다면 설치를 해주면 된다. https://cloud.google.com/sdk?hl=ko Cloud SDK - 라이브러리 및 명령줄 도구 | Google Cloud Cloud SDK는 Google Cloud에서의 개발을 위한 도구 모음으로 gcloud, gsutil, ..
지금까지는 하나의 Docker Image만을 띄우는 것을 알아보았는데 하난의 Docker Image가 아니라 여러 Docker Image를 띄우고 싶거나 A Image를 띄우고 B Image를 띄워야 하는 상황이 있다면?(B가 A에 의존) Docker compose를 활용을 할 수 있다. Docker compose 설치 Mac이나 Window라면 docker desktop을 설치하면서 docker compose도 자동으로 설치가 된다. linux라면 docker compose는 따로 설치를 해줘야 한다. https://docs.docker.com/compose/install/ Overview docs.docker.com 설치 후 버전을 확인하면서 제대로 설치가 되었는지 확인을 해준다. $docker co..
이번에는 docker image를 어떻게 생성을 하는지에 대해서 알아보려고 합니다. 간단한 fast api 애플리케이션을 실행하는 docker image 서버를 만들어 보려고 합니다. 먼저 폴더를 하나 생성하고 관련 패키지를 다운로드 그리고 간단한 fastapi 코드를 작성해 줍니다. $mkdir fastapi_example $cd fastapi_example $pip install fastapi[all] $pip list --not-required --format=freeze >> requirements.txt Dockerfile을 이용하여 docker build할때 사용할 requirements.txt도 pip list 명령어를 사용해서 만들어 줍니다. 이때 pip freeze를 사용하지 않는 이유는..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/bTOVmt/btrX3ZXhXjL/0uMvX1KKE9yLHjAfBkdy10/img.png)
Docker Image 와 Container Docker Image는 컨테이너를 실행할 때 사용하는 템플릿과 같은 것. Read Only 한 특성이 있다. Docker Container는 Docker Image를 활용해 실행된 인스턴스이다. Write가 가능하다. Docker 기본 명령어 * docker search docker search [option] TERM docker serach 명령어를 실행해서 다운로드 받기를 원하는 이미지를 찾을 수 있다. mysql 관련 이미지를 찾고 싶으면 docker search mysql명령어를 입력하면 된다. 다운로드를 받을때는 웬만하면 OFFICIAL한 이미지를 다운로드 받는게 좋다. * docker pull docker pull [option] image_na..
그루핑 기존 문서에서 설명하였던 메타 문자들만으로는 하나의 문자에만 반복 혹은 규칙을 적용할 수 있었는데 문자열을 그룹핑에서 메타 문자를 적용할 필요가 있을 때 사용하는 것이 그루핑이다. p = re.compile('(ABC)+') m = p.search('ABCABCABC OK?') print(m) print(m.group()) ABCABCABC 위의 예시처럼 (ABC)가 반복되는 구간을 찾을 수 있다. 또한 다음은 전화번호를 탐지하는 정규표현식 패턴인데 이중에서 이름만 뽑아내고 싶다면 아래와 같이 그루핑을 이용할 수 있다. p = re.compile(r"(\w+)\s+\d+[-]\d+[-]\d+") m = p.search("park 010-1234-1234") print(m.group(1)) park..