본문 바로가기

프로그래밍44

[Docker] DIND 빌드가 너무 느린 경우 시도해 볼만한 방법 도커컨테이너가 호스트 시스템의 도커에 접근하여 다른 도커컨테이너를 조작하는 DIND (Docker in docker)를 GitLab CI/CD와 함께 사용하는 도중, 도커 이미지 빌드가 너무 느려진 경우 시도해볼 만한 방법입니다. 스토리지 드라이버 변경 사용자가 직업 도커 호스트 시스템의 도커에서 실행하는 빌드만큼 빠르지는 않지만, 제법 눈에 띄는 성능 향상을 느낄 수 있었습니다. environment = [ "DOCKER_DRIVER=aufs" ] 참고 : 링크1 2023. 6. 22.
[Python] Uvicorn 일자별 로그 쌓기(with. FastAPI) Python의 ASGI(Asynchronous Server Gateway Interface) web server인 Uvicorn을 활용하여 서버를 실행 중, 일자별로 로그 파일을 생성하여 쌓는 방법을 기록합니다. 1. log.ini 파일 생성 [loggers] keys=root [handlers] keys=logfile,logconsole [formatters] keys=logformatter [logger_root] level=INFO handlers=logfile, logconsole [formatter_logformatter] format=[%(asctime)s.%(msecs)03d] %(levelname)s [%(thread)d] - %(message)s [handler_logfile] class.. 2022. 7. 26.
[Docker] Docker 이미지 생성 및 자동 배포(FastAPI 와 Gitlab CI/CD를 곁들인) Python 프레임워크인 FastAPI로 작성된 API 서버를 Gitlab CI/CD를 이용하여 Docker 이미지로 자동 빌드, 배포하는 방법을 기록합니다. 0. 환경 및 실행 흐름 - 개발 환경 : Windows 10 / Python 3.10 / FastAPI 0.72.0 - 배포 서버 OS : Ubuntu 20.04.3 LTS / Docker 20.10.12 Community 1. Docker에 Gitlab-Runner, DinD Container 실행 # 1. Gitlab-Runner Image pull sudo docker pull gitlab/gitlab-runner:latest # 2. Check Image sudo sudo docker image ls -a # 3. Create Gitlab.. 2022. 7. 18.
[MariaDB] 임시 숫자 테이블(feat. Sequence Storage Engine) DB를 사용하다 보면 종종 0에서 N까지의 수가 들어있는 임시 테이블이 필요한 경우가 있습니다. 그때 활용하기에 좋은 MariaDB의 임시 테이블 조회 방법입니다. 10.1 이상의 버전이 필요합니다. 방법과 결과 SELECT seq AS idx from seq_0_to_10 위와 같이 사용하면 임시 테이블 조인 시에 편리하게 사용할 수 있습니다. 참조 : 링크 2022. 7. 7.
[Python] requests 사용시 SSL 서명 오류 Python의 requests 모듈을 사용하는 중 SSL 인증서 오류가 발생하여 해결법을 기록합니다. 오류 현상과 예상 원인 SSL : WRONG_SIGNATURE_TYPE 에러로 인해 Max retries까지 연결을 시도한 후 실행이 종료되었습니다. HTTPSConnectionPool(host='???', port=443): Max retries exceeded with url: /? (Caused by SSLError(SSLError(1, '[SSL: WRONG_SIGNATURE_TYPE] wrong signature type (_ssl.c:997)'))) 해결방법 예전 버전 TLS에 대한 Adapter를 만들어 session과 함께 사용하였습니다. import ssl import requests #.. 2022. 6. 28.
[Python] Java와 다른 예외처리(try-except) 기존에 사용하던 Java와 다르게 동작하는 Python의 Exception 이후 처리에 대해 기록합니다. 문법과 기대 try: # 할 일을 하다가 do_someting() except Exception as e: # 실수가 생겼다! do_logging() finally: # 실수 했더라도 이건 해야해 do_must() # 실수는 처리했으니 계속해야지 do_continue() 위와 같은 코드에서, 결국엔 do_continue()를 실행해 나갈 것이라 기대했다. 그러나... 결과 try: # 할 일을 하다가 do_someting() except Exception as e: # 실수가 생겼다! do_logging() finally: # 실수 했더라도 이건 해야해 do_must() # 실수가 있었으니 이후의 것.. 2022. 6. 21.