1. 문제 상황 컨테이너를 각자 띄우고 네트워크를 연결해주고 볼륨을 연결해주고를 반복하다보니 아래와 같은 생각을 하였다. MariaDB, Redis, Spring Boot Jar, Prometheus, Grafana 등의 컨테이너를 한번에 띄우고 업데이트할 수 있는 방법은 없을까? 그리고 각 컨테이너의 docker network를 손쉽게 연결하고 볼륨, 의존관계, 기타 환경설정 등을 하나의 파일에서 편리하게 설정하고 관리할 수 있는 방법은 없을까? 2. 문제 해결 ✏️ Docker Compose를 사용하자! Docker Compose란 다중 컨테이너 애플리케이션을 정의하기 위한 Tool이라고 보면 된다. ✏️ Docker Compose 주요 특징 1️⃣ 단일 호스트의 여러 개의 격리된 환경 Compose..
docker
단계별로 성장하자!1. 문제 상황 클라우드 플랫폼을 사용할 수 없고 학교 서버실 물리 컴퓨터(Ubuntu 20.04)에 배포해야 하는 상황이다. 물리 컴퓨터도 단 1대만 사용할 수 있어서 모든 처리를 한 곳에서 해야한다. 이러한 상황에서 Nginx 설정하는 방법을 알아보자. 2. 문제 해결 우선 현재 Nginx는 Docker 컨테이너상에서 동작하고 있으므로 Nginx 컨테이너상의 /usr/share/html/html 경로와 내 물리서버에 React App을 Build한 결과물 폴더의 경로를 볼륨 매핑하는 과정이 먼저 필요하다. 또한 Nginx 컨테이너와 같은 네트워크 상의 kiosek-backend 이름의 실행되고 있는 컨테이너가 있다고 가정한다. 1. 사용자가 브라우저에서 http://test.kr 을 입력하여 나의 N..
1. 문제 상황 Spring boot 프로젝트를 docker image로 build 하여 Ubuntu 서버의 도커 컨테이너로 실행을 시켰더니 아래와 같은 에러가 나타났다. The requested image's platform (linux/arm64/v8) does not match the detected host platform (linux/amd64/v3) and no specific platform was requested ........ 2. 문제 해결 알고 보니 Docker Image를 build 했던 pc가 Apple M1 기반 맥북이었고 기본으로 Image build시에 Arm64 기반의 이미지가 만들어졌다. 하지만 배포할 서버는 Ubuntu 20.04로 Amd64 기반의 프로세서를 사용하기..
Docker Compose가 뭘까? 각각 하나씩 관리하던 컨테이너를 하나로 모아서 관리하기 위한 툴 (현재 내가 진행 중인 프로젝트에서 Spring 백엔드 서버, React 프론트 서버, MariaDB, Redis의 여러 컨테이너를 모아서 관리할 수 있었다.) 어떤 형식인지 간략하게 설명해줘 docker-compose.yml 파일을 작성하여 실행하면 한번에 이미지를 생성하고 실행할 수 있다. yml 형식에 대해서 조금만 말하자면 key-value 형식이며 int, boolean, String 타입을 지원한다. 리스트의 앞에는 들여쓰기들여 쓰기 후 - 를 붙이고, 리스트가 아닌 경우는 들여 쓰기로 구분한다. 이외에 |, |-, ---, > 등 다양한 기호가 있는데 나중에 따로 자세히 알아보자! versio..
Dockerfile이란? 도커에서 사용되는 이미지를 생성하기 위해 스크립트를 작성할 수 있는 텍스트 형식의 파일이다. 주요 명령어 Command Description FROM Base 이미지를 지정 (ex: Node 나 JDK 지정) LABEL Version, Writer와 같은 이미지 메타데이터를 작성 CMD 도커 컨테이너가 시작될 때 실행되는 shell 명령을 설정 RUN 이미지 작성시 실행되는 shell 명령 설정 및 새로운 이미지 layer를 만드는 역할 ENTRYPOINT 도커 컨테이너가 시작될 때 실행되는 shell 명령을 설정 CMD와는 다르게 docker run에서 부여되는 명령에 overrride가 되지 않고 실행됨 EXPOSE 도커 컨테이너 외부에 오픈할 Port 설정 ENV 도커 컨테..