Education*
Devops
Architecture
F/B End
B.Chain
Basic
Others
CLOSE
Search For:
Search
BY TAGS
linux
HTTP
golang
flutter
java
fintech
개발환경
kubernetes
network
Docker
devops
database
tutorial
cli
분산시스템
www
블록체인
AWS
system admin
bigdata
보안
금융
msa
mysql
redis
Linux command
dns
javascript
CICD
VPC
FILESYSTEM
S3
NGINX
TCP/IP
ZOOKEEPER
NOSQL
IAC
CLOUD
TERRAFORM
logging
IT용어
Kafka
docker-compose
Dart
Create MSA Based Delivery Apps Using Docker
Recommanded
Free
YOUTUBE Lecture:
<% selectedImage[1] %>
yundream
2023-05-27
2023-04-30
1197
## 소개 이 문서는 Joinc 인프런 강좌인 **Create MSA Based Delivery Apps Using Docker** 의 원할한 학습을 위한 환경설정 정보와 추가적인 학습기회를 제공하기 위한 정보들을 포함하고 있습니다. ### Ubuntu Linux 설치 [Ubuntu Download 사이트](https://ubuntu.com/download/desktop)에서 **22.04.2**를 다운로드 해서 설치하시면 됩니다.  ### 예제 코드 다운로드 강좌의 예제코드는 [joinc-edu github repository](https://github.com/joinc-edu/create-msa-based-delivery-apps-using-docker) 에서 다운로드(git clone)해서 사용 할 수 있습니다. ``` $ git clone https://github.com/joinc-edu/create-msa-based-delivery-apps-using-docker.git ``` | 디렉토리 | 설명 | 사용 커리큘럼 | | --------- | ----------------------------------------------------- | ------------------------------------ | | hello-app | dockerizing을 위한 hello 예제 애플리케이션 | 섹션 1. Docker Review | | wrodpress | wordpress docker-compose 예제 파일 | 섹션 2. Docker Compose | | count | python & redis를 이용한 counter 애플리케이션 예제 | 섹션 2. Docker Compose | | traefik | traefik 예제 애플리케이션 | 섹션 3. Traefik Proxy Server | | delivery | docker-compose 기반의 python 배달앱 예제 애플리케이션 | 섹션 4. MSA Application with Traefik | ### Python 개발 환경 설정 우분투 리눅스를 설치하면 python 3.x 버전이 기본으로 설치됩니다. 아래와 같이 Python 버전을 확인할 수 있습니다. ```shell $ python --version Python 3.10.7 ``` Python의 패키지 관리자인 **pip**는 아래와 같이 설치할 수 있습니다. ```shell $ sudo apt-get update $ sudo apt-get -y install python3-pip ``` pip3 버전을 확인해 보겠습니다. ```shell $ pip3 --version $ pip 22.2 from /usr/lib/python3/dist-packages/pip (python 3.10) ``` ### Make 설치 섹션 4. MSA Application with Traefik 에서 도커 빌드를 관리하기 위해서 **make**를 사용하고 있습니다. make는 아래와 같이 설치하시면 됩니다. ```shell $ sudo apt-get install make gcc $ make -v GNU Make 4.3 x86_64-pc-linux-gnu 빌드 .... ``` ## 추가 학습 참고 문서들 강좌는 Hands On 기반으로 핵심적인 내용들을 빠르게 학습할 수 있도록 구성됐습니다. 몇 몇 내용들은 의도적으로 다루지 않은 내용들 그리고 강좌와 관련해서 도움이 되는 추가적인 내용들을 정리했습니다. ## Docker #### Docker Install 오래된 docker 패키지 삭제 ```shell $ sudo apt-get remove docker docker-engine docker.io containerd runc ``` HTTPS로 리포지토리를 사용할 수 있도록 apt를 업데이트하고 필요한 패키지를 설치한다. ```shell $ sudo apt-get update $ sudo apt-get install ca-certificates curl gnupg ``` Docker 공식 GPG 키를 추가한다. ```shell $ sudo install -m 0755 -d /etc/apt/keyrings $ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg $ sudo chmod a+r /etc/apt/keyrings/docker.gpg ``` 아래 명령을 이용해서 Docker 패키지 레포지토리를 추가한다. ```shell $ echo \ "deb [arch="$(dpkg --print-architecture)" signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \ "$(. /etc/os-release && echo "$VERSION_CODENAME")" stable" | \ sudo tee /etc/apt/sources.list.d/docker.list > /dev/null ``` 도커 엔진을 설치한다. ```shell $ sudo apt-get update $ sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin ``` 도커서버를 실행한다. ```shell $ sudo systemctl restart docker ``` 도커가 잘 설치됐는지 테스트한다. ```shell $ sudo docker run hello-world ``` 도커는 기본적으로 root 유저로 실행해야 한다. 매번 sudo 로 실행하기 번거롭기 때문에 현재 사용 중인 일반 유저로 도커를 사용할 수 있도록 할 수 있다. ```shell $ sudo groupadd docker $ sudo usermod -aG docker $USER $ newgrp docker ``` ## Docker-Compose #### Docker compose install ```shell $ sudo curl -SL https://github.com/docker/compose/releases/download/v2.17.2/docker-compose-linux-x86_64 -o /usr/local/bin/docker-compose $ sudo chmod +x /usr/local/bin/docker-compose ``` docker-compose 설치 테스트 ```shell $ docker-compose version Docker Compose version v2.17.2 ``` #### Docker compose 명령 * **docker-compose up**: docker-compose.yaml 파일을 읽어서 도커 컨테이너를 만들고 실행한다. * **docker-compose stop**: 도커 컴포즈 서비스를 중지(stop) 하고 컨테이너와 네트워크를 삭제한다. --- * **docker-compose start**: 도커 컴포즈 서비스를 시작한다. * **docker-compose stop**: 도커 컴포즈 서비스를 중지한다. --- * **docker-compose pause**: 도커 컴포즈 서비스를 멈춘다. * **docker-compose unpause**: 멈춘 도커 컴포즈를 실행시킨다. #### Volume **데이터를 컨테이너 외부에 남겨서** 컨테이너가 삭제되더라도 데이터를 유지하거나 서비스간 데이터를 공유하기 위해서 사용합니다. **worpress** 예제 docker-compose.yaml 파일입니다. ```yaml services: db: # We use a mariadb image which supports both amd64 & arm64 architecture image: mariadb:10.6.4-focal # If you really want to use MySQL, uncomment the following line #image: mysql:8.0.27 command: '--default-authentication-plugin=mysql_native_password' volumes: - db_data:/var/lib/mysql restart: always environment: - MYSQL_ROOT_PASSWORD=somewordpress - MYSQL_DATABASE=wordpress - MYSQL_USER=wordpress - MYSQL_PASSWORD=wordpress expose: - 3306 - 33060 wordpress: image: wordpress:latest volumes: - wp_data:/var/www/html ports: - 80:80 restart: always environment: - WORDPRESS_DB_HOST=db - WORDPRESS_DB_USER=wordpress - WORDPRESS_DB_PASSWORD=wordpress - WORDPRESS_DB_NAME=wordpress volumes: db_data: wp_data: ``` 가장 아래에 **volumes:** 에 외부 볼륨을 설정하면 됩니다. 예제는 db_data 와 wp_data 라는 두 개의 볼륨을 만들도록 지시하고 있습니다. docker-compose up 하면 볼륨이 만들어집니다. 이렇게 만들어진 볼륨은 docker volume ls 로 확인 할 수 있습니다. ```shell $ docker volume ls | grep _data local wordpress_db_data local wordpress_wp_data ``` docker volume inspect로 wordpres_db_data 볼륨의 상세정보를 읽어보겠습니다. ```shell $ docker volume inspect wordpress_db_data ``` ```json [ { "CreatedAt": "2023-04-26T01:28:51+09:00", "Driver": "local", "Labels": { "com.docker.compose.project": "wordpress", "com.docker.compose.version": "2.17.2", "com.docker.compose.volume": "db_data" }, "Mountpoint": "/var/lib/docker/volumes/wordpress_db_data/_data", "Name": "wordpress_db_data", "Options": null, "Scope": "local" } ] ``` Mountpoint를 보면 로컬 파일시스템을 마운트하고 있는 것을 알고 있습니다. wordpress의 데이터는 로컬 파일시스템에 저장되기 때문에 컴포즈 서비스의 다른 서비스도 읽을 수 있습니다. 또한 컨테이너와는 독립적으로 관리되기 때문에 서비스를 **중단(docker-compose down)** 하더라도 삭제되지 않습니다. 각 서비스는 아래와 같이 볼륨을 마운트해서 사용할 수 있습니다. ```yaml wordpress: image: wordpress:latest volumes: - wp_data:/var/www/html ```
Recent Posts
Vertex Gemini 기반 AI 에이전트 개발 05. 첫 번째 LLM 애플리케이션 개발
LLama-3.2-Vision 테스트
Vertex Gemini 기반 AI 에이전트 개발 04. 프롬프트 엔지니어링
Vertex Gemini 기반 AI 에이전트 개발 03. Vertex AI Gemini 둘러보기
Vertex Gemini 기반 AI 에이전트 개발 02. 생성 AI에 대해서
Vertex Gemini 기반 AI 에이전트 개발 01. 소개
Vertex Gemini 기반 AI 에이전트 개발-소개
생성 AI 모델 Flux.1 설치 및 사용
GPT를 이용한 Reranker 테스트
5분만에 만들어보는 Streamlit 챗봇
Archive Posts
Tags
Copyrights © -
Joinc
, All Rights Reserved.
Inherited From -
Yundream
Rebranded By -
Joonphil
Recent Posts
Archive Posts
Tags