일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 29 | 30 |
- 구글
- ssh
- Linux
- Kibana
- nodejs
- Ai
- gemini
- MySQL
- 설정
- LLM
- API
- 바보
- Windows
- unity
- docker
- 유니티
- app
- 영어
- build
- dart
- MSSQL
- JavaScript
- ChatGPT
- AWS
- Python
- FLUTTER
- error
- JS
- elasticsearch
- Today
- Total
목록docker (20)
가끔 보자, 하늘.

이번에는 CDK로 구축한 서비스가 과부하 상태에서 ECS에 설정한 대로 부하를 잘 분산하는지 확인해 보겠습니다. 우선 ECR에 등록할 간단한 API 서비스를 만듭니다. 이 예제에서는 /calc 라는 인터페이스를 통해 랜덤한 수를 소인수분해하고 해당 결과를 돌려주도록 하는 샘플을 추가해 보았습니다. CPU 부하를 기준으로 스케일아웃을 설정할 것이므로 수초 동안 연산을 수행 후 결과를 돌려주도록 합니다. import random from fastapi import FastAPI app = FastAPI() @app.get("/") def health_check(): return 200 @app.get("/calc") async def funcCalc(): x = random.randrange(99999999..
React에 이어 Python/Docker 운영 환경에서 어떻게 환경변수를 관리하면 되는지 알아보겠습니다. 이 글에서는 파싱 라이브러리 중 하나인 pydantic의 BaseSettings(환경변수를 읽고 관리하는 모듈)를 사용하여 구현해 보겠습니다. 우리는 개발, 라이브 운영 환경을 운영해야 하며, 개발 환경은 자신의 PC에서 가동되며, 라이브 환경은 DOCKER - ubuntu로 빌드되어 가동되며, 운영 환경에 따라 DB IP와 PORT가 달라진다고 가정하겠습니다. 개발 환경을 위해 아래와 같은 코드를 준비합니다. from pydantic import BaseSettings class Settings(BaseSettings): DB_IP: str = '192.168.0.10' DB_PORT: int =..
개발, 테스트 및 라이브 환경에서 손쉽게 관리, 배포 할 수 있도록 환경 변수를 많이 사용합니다. React에서는 .env로 명명된 파일에서 REACT_APP_ 이라는 prefix가 붙은 key,value값을 기본적으로 읽어옵니다. 이를 이용해 어떻게 각 운영 환경별로 설정 한 후 코드 혹은 값 변경없이 운영이 가능한지 알아보겠습니다. 아래 예제에서는 개발, 라이브 운영 환경을 운영해야 하며, 개발 환경은 자신의 PC에서 가동되며, 라이브 환경은 DOCKER - ubuntu로 빌드되어 가동되며, 운영 환경에 따라 DB IP와 PORT가 달라진다고 가정하겠습니다. 개발 환경을 위해 .env 파일에 아래와 같이 정의합니다. REACT_APP_DB_IP=192.168.0.10 REACT_APP_DB_PORT=..

이번에 Jenkins + ECS로 CI/CD를 구축하면서 겪었던 삽질을 정리해 보았습니다. 부디 이 글을 보시고 같은 삽질 덜 하시길 바랍니다. "Hello"라는 텍스트를 돌려주는 간단한 API 서비스를 만들고 배포하는 과정을 살펴보려 합니다. 아래와 같은 절차, 인프라를 구성해 볼 예정입니다. 작업할 순서는 다음과 같습니다. 계정 생성 ECR 등록 Jenkins 설정 및 배포 ECS 구축 서비스 시작하기 1. 계정 생성 우선 사용할 계정을 하나 생성하겠습니다. CD에 사용할 계정은 인프라 관리를 위한 중요 권한을 할당해야 하는데, 안쓸때도 권한을 유지하기 보다는 AssumeRole을 이용하여 CD 시에만 일시적으로 권한을 할당하여 사용하도록 하겠습니다. "사용자 권한"은 별도 설정을 하지 않고 완료합니..

CI/CD의 필요성은 이미 너무 잘 알려져 있으므로 잡설은 뒤로하고 바로 구축 절차를 살펴 보겠습니다. 별도 서버가 아닌 별도 PC 혹은 자신의 PC에 필요한 제품과 자신의 서비스를 docker로 실행할 수 있도록 다음과 같은 순서로 알아보겠습니다. 시스템 설정 Docker Desktop 설치 Docker 이미지/컨테이너 살펴보기 Jenkins로 서비스 자동 배포하기 [ 시스템 설정 ] 1. BIOS에서 Virtualization Technology 항목은 기본으로 "Disabled"로 설정되어 있으며, 이를 "Enabled"로 변경합니다. 2. Windwos 기능 켜기/끄기에서 Hyper-V / 가상 머신 플랫폼을 활성화합니다. [Git/Jenkins 설치 참고 링크, Jenkins 한글 깨짐 현상 참..
아쉽지만 docker는 실행중인 컨테이너에 실시간으로 포트를 오픈하는 기능을 제공하지는 않는다. 아래와 같은 방법들로 다시 시작해야 한다. 1. 컨테이너의 변경 사항이 없다면.. stop 후 docker run에 -p 옵션을 추가하여 실행하면 될 것이다. 2. 컨테이너의 변경 사항이 있다면 docker commit를 사용해서 변경된 내용이 적용된 컨테이너를 만들어서 -p 옵션으로 재실행한다. docker stop running_containerdocker commit running_container new_containerdocker run -p newport:newport new_container
docker는 컨테이너를 실행하면서 컨테이너의 가상 디바이스에 RFC 1918 에 기술된 내용에 따라 private 영역의, 임의의 IP를 할당한다. masquerading rule (표현이 재밌네 ^^)에 따라 할당한다고 하는데 상세한 건 "이 문서" 를 참고 바람. 어쨌든 중요한 건 ,host server에서 임의로 설정하기 때문에 이렇게 주어진 IP는 외부에서 알 수 없다. container에 포함된 각종 어플리케이션에서는, 자신의 IP를 얻어와서 외부의 container 혹은 솔루션에 알려주어도 외부에서는 해당 컨테이너로 접근할 수 없다. 외부에서 container 자신에게 접속하게 하려면 (routable ip address를 사용하는) host 서버의 IP주소와 docker run 시 -p 옵..
(ubuntu 기준) /etc/init.d/docker 의 DOCKER_OPTS에 --insecure-registry 정보를 추가하라고 되어 있는 안내가 있던데, 해보니 안됨. /etc/default/docker 파일을 열어 아래와 같이 추가 후 docker를 다시 시작하면 됨. DOCKER_OPTS="$DOCKER_OPTS --insecure-registry=localhost:5000" 음.. 어차피 같은 옵션 처리일텐데 왜 안되지. /etc/init.d/docker에 추가할 때 문법이 틀린거였나?? 알송달송...