반응형

NginX 를  현재 서버에 설치해서 사용하는 경우, 서버의 이곳 저곳에 nginx 관련 정보들이 흩어져 있게 됩니다.

Docker로 설정할때 어려운 부분들이죠.

이를 한번 정리해보고자합니다.

 

 

0. 우선 nginx container를 하나 생성

docker run -d --name tmp-nginx nginx

 

 

docker cp 명령어를 사용하여 container의 /etc/nginx/nginx.conf 파일을 현재 프로젝트 폴더의 ./nginx/nginx.conf 로 옮긴다.

 

1. nginx.conf 

docker cp tmp-nginx:/etc/nginx/nginx.conf ./nginx/nginx.conf

 

 

2. config.d

docker cp tmp-nginx:/etc/nginx/conf.d ./nginx

 

 

docker-compose 파일 작성하기

services:
  api_gateway:
    image: nginx
    volumes:
      - ./nginx/nginx.conf:/etc/nginx/nginx.conf
      - ./nginx/conf.d/:/etc/nginx/conf.d
    ports:
      - 8080:80
  mywebserver:
    build: ./mywebserver
  myapiserver:
    build: ./myapiserver

 

 

 

 

 

Tip

1. Docker-Compose 는 어디에 있나?

docker desktop을 설치하고 나서 docker-compose 를 찾으려고 하면 안찾아져요.

이유는 path가 안걸려 있어서 그래요.

mac에서 보면 docker와 compose 의 위치가 상이합니다. (왜 이렇게 해놨는지는... 저도잘..)

docker: /Applications/Docker.app/Contents/Resources/bin/docker

docker-compose: /Applications/Docker.app/Contents/Resources/cli-plugins/docker-compose

 

아무튼 그래서 docker-compose를 terminal에서 실행하려면, PATH에 추가해주는 것이 좋겠죠.

export PATH="~~~~:/Applications/Docker.app/Contents/Resources/bin:/Applications/Docker.app/Contents/Resources/cli-plugins:$PATH"

 

windows나 linux는 또다른 위치 입니다.

[Ubuntu]

docker-compose: usr/lib/docker/cli-plugins/docker-compose

docker: /usr/bin/docker /usr/lib/docker /etc/docker /usr/local/bin/docker /usr/libexec/docker

 

2. Dockerfile 에서 npm build 시 error 발생하면 바로 볼수 있는 방법

 

RUN npm run build || cat npm-debug.log

 

'Node.js , React, Docker' 카테고리의 다른 글

[React] Components  (0) 2024.09.07
[AWS] 여러가지 알아야 할것들  (3) 2024.07.12
Docker 간단히 이해하기  (0) 2024.07.11
[Docker] proxy 문제 해결  (0) 2021.11.11
REST API  (0) 2017.06.20
반응형

 

 

 

 

 VPC의 구성

VPC(Virtual Private Cloud)는 AWS의 사용자 젖용 가상 네트워크 입니다.

각 지역별 리즌들이 있고 이 리즌 내에 VPC를 구성 하는 것이죠.

 

 

 

VPC내에 하나 이상의 서브넷을 구성할 수 있습니다.

기본 VPC는 Amazon VPC를 사용하기 시작하는 경우 각 AWS 리전에 기본 VPC가 있습니다. 기본 VPC는 각 가용 영역의 퍼블릭 서브넷, 인터넷 게이트웨이 및 DNS 확인 활성화 설정과 함께 제공됩니다. 따라서 기본 VPC로 Amazon EC2 인스턴스를 즉시 시작할 수 있습니다. 기본 VPC에서 Elastic Load Balancing, Amazon RDS, Amazon EMR 같은 서비스를 사용할 수도 있습니다.

 

VPC를 생성할 경우

다음 절차에 따라 Virtual Private Cloud(VPC)를 생성합니다. VPC에서 AWS 리소스를 생성하려면 먼저 VPC에 서브넷, 라우팅 테이블, 게이트웨이와 같은 추가 리소스가 있어야 합니다

 

 

 

ECS

 

 

 

ECS 는 docker 와 달리 bridge network 를 기본 사용하지 않습니다.
host network 를 사용합니다.
즉, 하나의 Task Definition 에서 정의된 컨테이너들은 동일한 EC2 내에 호스트 네트워크를 그대로 사용한합니다.
따라서 localhost 로 컨테이너간 통신이 가능합니다.

 

실행 에러 exec format error

 

만약 실행시 위와 같은 에러가 발생했다면 아마 나처럼 M1, M2 macOS 를 사용중일 것입니다.
AWS 도 차츰 arm 아키텍처를 적극지원하지만, 아직은 대다수의 환경이 amd64(intel) 로 되어 있는 것은 어쩔 수없습니다.

원인
docker image build 는 M1 (arm64) 에서 했기 때문에 arm64 이미지를 생성한 상태고, ECS Fargate 아키텍쳐는 x86_64 (amd64) 기 때문입니다.
즉 이미지를 만든 provider와 task executor 실행 환경이 다르기 때문에 발생한 문제입니다.

'Node.js , React, Docker' 카테고리의 다른 글

[Docker] NginX docker 환경 만들기  (0) 2024.12.24
[React] Components  (0) 2024.09.07
Docker 간단히 이해하기  (0) 2024.07.11
[Docker] proxy 문제 해결  (0) 2021.11.11
REST API  (0) 2017.06.20
반응형

 

 

Docker

  • Virtual Machine : 간단히 표현하면 가상화된 PC (OS 포함)
  • Container : 가상화된 운영 환경, OS 위에 가상화된 어플리케이션 실행환경

 

  • Docker Image : 이미지를 바탕으로 container를 만듬
  • Dockerfile ⇒ [Build] ⇒ Image 생성 ⇒ [Run]⇒ Container 실행

 

  • Docker Container 상태 변화

'Node.js , React, Docker' 카테고리의 다른 글

[React] Components  (0) 2024.09.07
[AWS] 여러가지 알아야 할것들  (3) 2024.07.12
[Docker] proxy 문제 해결  (0) 2021.11.11
REST API  (0) 2017.06.20
react 시작하기!!  (0) 2016.12.29
반응형

 

소프트웨어 설계를 하다보면 디자인툴이 필요할때가 있습니다.

저도 설계를 진행하거나 아이디어 도출 단계, 그리고 시나리오 분석할때 UML을 자주 사용하는 편인데요.

UML 툴중에 GUI를 이용한 툴을 많이들 사용할겁니다.

 

저는 Plant UML을 자주 사용하는 편입니다.

 

텍스트로 입력해서 UML을 그려주니까 uml 을 그릴떄 선이나 위치 모양 등에 대해서 좀 신경을 안쓰고 타이핑(텍스트) 되어있는 이름과 플로우를 보면서 코딩되면 어떤 모양일지 생각해보게 되어서 좋은것 같습니다.

 

물론 단점도 있죠.. 텍스트로 입력하다보니 PlantUML 문법을 좀 알아야 하고, 마음에 드는 모양을 만들기가 좀 힘들긴 합니다.

그래서 보고용으로는 좀 별로인듯 한데,  근데 또 이것이 보고용 자료 만들때도 마음은 편해요.

Plant UML로 작성하겠다고 하고 진행하면, 나중에 아웃풋(결과물)에 대해서 "왜 이거 이렇게 그렸어? 모양이 맘에 안드네" 이런 말을 않고 넘어가게 되는 것 같아요... Plant UML은 원래 안되... 지가(프로그램이) 알아서 해줘.. 라는 인식? 때문에 그런듯 합니다.

 

 

아무튼 제가 자주 사용하고 있던 opensource로 운영되는Plant UML 에디터 사이트를 알려드겠습니다.

그리고 간단히 서버를 로컬에서 실행하는 것도 적어보겠습니다.

 

이 사이트가 열악한것인지 네트워크 연결이 안좋은것인지는 모르겠으나 uml을 작성하다 보면 종종 랙이 걸리거나 반응이 느릴때가 있어서 불편해서 로컬에서 사용하기 시작했습니다.

 

PlantUML 

PlantUML 에 대한 문법과 사용 가이드가 있는 사이트 입니다.

https://plantuml.com/ko/

 

간단한 텍스트를 이용하여 멋진 UML 다이어그램을 만들 수 있는 오픈소스 도구입니다.

간단한 텍스트를 이용하여 쉽게 멋진 UML 다이어그램을 만들 수 있으며, 다양한 종류의 다이어그램을 제공하고 있습니다. 또한, 생성된 다이어그램을 PNG, LaTeX, EPS, SVG 와 같은 이미지로 변환할 수

plantuml.com

 

Plant UML 에디터

제가 자주 사용하는 Plant UML 에디터는 여기에 있습니다.

history도 저장이 되어서 간단한 UML을 작성할때 사용합니다.

https://plantuml-editor.kkeisuke.dev/

 

PlantUML Editor

 

plantuml-editor.kkeisuke.dev

 

 

github

https://github.com/kkeisuke/plantuml-editor2

 

GitHub - kkeisuke/plantuml-editor2: PlantUML online demo client / Vue3 in Vite

PlantUML online demo client / Vue3 in Vite. Contribute to kkeisuke/plantuml-editor2 development by creating an account on GitHub.

github.com

github에도 소스코드 받아서 실행하는 법과 docker 이용하는 법이 잘 적혀있습니다.

저는 소스를 받아서 실행해 보려고 했는데 실패 했습니다. 그리고 docker를 이용해서 성공 했고요.

그래서 plantuml editor를 사용하는 것이 목적이라면 docker를 이용하는 방법을 추천 드립니다.

 

 

로컬에서 실행하는 방법 *** 핵심 ***

 

제가 테스트한 환경과 절차를 정리하면 다음과 같습니다.

 

PC: Macbook Air M1 

OS: MacOS

절차 : Docker 설치 -> colima 설치 -> colima 실행 -> docker image download -> docker image 실행

~/github $ brew install docker
~/github $ brew install colima


$colima start 

~/github $ colima start
INFO[0001] starting colima                              
INFO[0001] runtime: docker                              
INFO[0002] creating and starting ...                     context=vm
> Terminal is not available, proceeding without opening an editor
> Starting the instance "colima" with VM driver "qemu"
> QEMU binary "/opt/homebrew/bin/qemu-system-aarch64" seems properly signed with the "com.apple.security.hypervisor" entitlement
INFO[0097] provisioning ...                              context=docker
INFO[0097] starting ...                                  context=docker
INFO[0099] done                  


~/github $ Docker ps -a

///// plant uml 서버 image download
~/github $ docker pull plantuml/plantuml-server:jetty

///// plant uml 서버 실행
~/github $ docker run -d -p 4000:8080 plantuml/plantuml-server:jetty

 

docker desktop 말고 colima로 docker 실행 환경을 만들었고 그리고 나서 plantuml 서버 이미지를 다운로드 하고 실행 했습니다.

 

 

PlantUML 실행 화면

 

 

다들 설계도 잘하는 개발자가 되어 봐요~~

 

## 해피 코딩

 

반응형

도커(docker) 최신 이미지를 네트워크를 통해서 가져올 때

망분리 등의 이유로 차단될 때 프록시 서버를 설정해서 가져올 수 있습니다.

1) 도커 서비스 데몬 폴더를 만듭니다.

$ sudo mkdir -p /etc/systemd/system/docker.service.d

2) 프록시 서버 설정파일을 만듭니다.

$ sudo vi /etc/systemd/system/docker.service.d/http-proxy.conf

http-proxy.conf 파일 내용 (예시)

[Service] 
Environment="HTTP_PROXY=http://proxy.example.com:80" 
Environment="HTTPS_PROXY=https://proxy.example.com:443" 
Environment="NO_PROXY=localhost,127.0.0.1"

3) 변경 내용을 반영하고 도커 서비스 데몬을 재시작합니다.

$ sudo systemctl daemon-reload $ sudo systemctl restart docker

4) 적용된 결과를 확인합니다.

$ sudo systemctl show --property=Environment docker

출력 내용 (예시)

Environment=HTTP_PROXY=http://proxy.example.com:80 ...

docker pull , docker run 등을 실행하면 프록시를 통해 이미지를 가져오게됩니다.

NO_PROXY에 Proxy를 적용하지 않을 로컬과 사내에서 운영한 Repository를 설정할 수 있습니다.

도커에서 proxy(프록시)를 설정하고 최신 이미지를 네트워크를 통해서 가져오는 방법에 대해 알아보았습니다.

끝.

[또 다른 방법]

홈 디렉토리 .docker하위에 config.json 파일 생성 및 docker 명령어 실행(Docker 17.07 이상 버전만 가능)

$ vi ~/.docker/config.json

파일내용 (예시)

{
 "proxies": {
   "default": {
     "httpProxy": "http://proxy.example.com:3128",
     "httpsProxy": "https://proxy.example.com:3129",
     "noProxy": "*.test.example.com,.example.org,127.0.0.0/8"
   }
 }
}

 

저의 리눅스에서 테스트 했을때 정보입니다.

{
 "proxies": {
   "default": {
     "httpProxy": "http://proxy.example.com:80",
     "httpsProxy": "https://proxy.example.com:443",
     "noProxy": "localhost,127.0.0.1"
   }
 }
}
 

'Node.js , React, Docker' 카테고리의 다른 글

[React] Components  (0) 2024.09.07
[AWS] 여러가지 알아야 할것들  (3) 2024.07.12
Docker 간단히 이해하기  (0) 2024.07.11
REST API  (0) 2017.06.20
react 시작하기!!  (0) 2016.12.29

+ Recent posts