[115-124] Laravel & PHP 프로젝트 도커화: 다중 컨테이너 설정 Laravel & PHP 프로젝트 도커화: 다중 컨테이너 설정 주요 컨테이너 구성1. Nginx 웹서버 컨테이너server: image: 'nginx:stable-alpine' ports: - '8000:80' volumes: - ./src:/var/www/html - ./nginx/nginx.conf:/etc/nginx/nginx.d/default.conf:ro depends_on: - php - mysql역할: 들어오는 요청 처리, PHP 인터프리터로 전달포트 매핑: 호스트 8000 → 컨테이너 80볼륨:소스코드 접근커스텀 nginx 설정 2. PHP 인터프리터 컨테이너php: build: context: . dockerfile: dockerfile.. [114] Target 설정 Laravel & PHP 도커화 프로젝트: 복잡한 다중 컨테이너 설정 프로젝트 개요Laravel PHP 애플리케이션은 Node.js와 달리 여러 컴포넌트의 협업이 필요한 복잡한 구조를 가집니다. 이 프로젝트의 목표는 호스트 머신에 아무것도 설치하지 않고도 Laravel 애플리케이션을 개발하고 실행할 수 있는 도커 환경을 구축하는 것입니다. 애플리케이션 컨테이너 구조PHP 인터프리터 컨테이너PHP 언어 실행 환경소스 코드 해석 및 실행응답 생성 담당Nginx 웹 서버 컨테이너들어오는 HTTP 요청 처리요청을 PHP 인터프리터로 전달응답을 클라이언트에게 반환MySQL 데이터베이스 컨테이너애플리케이션 데이터 저장PHP 인터프리터와 통신 유틸리티 컨테이너 구조Composer 컨테이너PHP 패키지 관리자종속성 설.. [104-112] 유틸리티 컨테이너에 대해서 유틸리티 컨테이너에 대해서 유틸리티 컨테이너: 환경만 제공하는 특수 컨테이너 유틸리티 컨테이너란?유틸리티 컨테이너는 애플리케이션을 포함하지 않고, 특정 환경만 제공하는 컨테이너입니다. 이는 호스트 시스템에 툴을 설치하지 않고도 해당 환경을 활용할 수 있게 해줍니다.주요 특징:애플리케이션 없이 환경만 포함특정 명령을 실행하기 위한 목적작업 완료 후 일반적으로 종료됨 컨테이너에서 명령 실행 방법1. docker exec - 실행 중인 컨테이너에 명령 추가# 기본 형식docker exec [컨테이너이름] [명령어]# 대화형 모드 (입력 가능)docker exec -it [컨테이너이름] [명령어]# 예시docker exec -it node-container npm init특징:기존 실행 중인 컨테이너 필요메.. [98-100] Docker Compose 명령어와 다중 컨테이너 구성 Docker Compose 명령어와 다중 컨테이너 구성 Docker Compose 주요 명령어서비스 시작# 모든 서비스 시작docker-compose up# 백그라운드 모드로 시작docker-compose up -d 서비스 중지 및 제거# 컨테이너 중지 및 네트워크 제거docker-compose down# 볼륨까지 함께 제거docker-compose down -v 완성된 docker-compose.yaml 예시version: "3.8"services: mongodb: image: 'mongo' volumes: - data:/data/db environment: MONGO_INITDB_ROOT_USERNAME: max MONGO_INITDB_ROOT_PASS.. [95, 96] Docker Compose 파일 만들기 Docker Compose 파일 만들기Docker Compose 파일 작성 가이드 기본 구조Docker Compose 파일은 YAML 형식으로 작성되며, 다중 컨테이너 애플리케이션의 구성을 정의합니다.version: "3.8" # Docker Compose 사양 버전services: # 컨테이너 정의 시작 mongodb: # 첫 번째 서비스(컨테이너) 이름 # 구성... backend: # 두 번째 서비스 이름 # 구성... frontend: # 세 번째 서비스 이름 # 구성...volumes: # 명명된 볼륨 정의 data: # 볼륨 이름 서비스 구성 요소이미지 지정mongodb: image: .. [94] Docker Compose : 무엇이며 왜 사용하는가? Docker Compose : 무엇이며 왜 사용하는가?Docker Compose: 다중 컨테이너 관리 도구 Docker Compose 개념Docker Compose는 여러 컨테이너로 구성된 애플리케이션을 정의하고 실행하기 위한 도구입니다.단일 명령으로 모든 서비스의 생성, 시작, 중지를 자동화할 수 있습니다. 주요 기능과 장점명령어 자동화여러 docker build, docker run 명령을 하나의 파일로 통합단일 명령으로 전체 애플리케이션 환경 제어 가능구성 파일 중심텍스트 기반 YAML 파일 사용버전 관리 시스템과 통합 가능명확한 문서화와 공유 용이개발 워크플로우 간소화복잡한 설정을 재사용 가능한 형태로 저장환경 간 일관성 유지팀 간 설정 공유 용이 Docker Compose의 한계Dockerfi.. [90] 바인드 마운트로 React 컨테이너에 대한 라이브 소스 코드 업데이트하기 [90] 바인드 마운트로 React 컨테이너에 대한 라이브 소스 코드 업데이트하기React 컨테이너의 실시간 소스 코드 업데이트 설정 바인드 마운트를 통한 개발 효율성 향상기본 설정 방법docker run --name goals-frontend \ --rm -p 3000:3000 -it \ -v /로컬경로/src:/app/src \ goals-react바인드 마운트의 목적로컬 소스 코드와 컨테이너 내부 코드 동기화코드 변경 시 실시간 반영이미지 재빌드 없이 개발 가능 운영체제별 추가 설정Windows에서 필요한 설정docker run --name goals-frontend \ --rm -p 3000:3000 -it \ -v C:\Users\user\path\to\frontend\src:/app.. [89] NodeJS 컨테이너의 볼륨, 바인딩 마운트 및 폴리싱 (Polishing) NodeJS 컨테이너 최적화: 볼륨과 개발 환경 설정 볼륨 설정으로 데이터 지속성과 개발 효율성 확보로그 데이터 지속성 (명명된 볼륨)-v logs:/app/logs로그 파일을 컨테이너 외부에 저장컨테이너 재시작/제거 후에도 로그 유지 소스 코드 실시간 반영 (바인드 마운트)-v /로컬경로:/app로컬 소스 코드와 컨테이너 내부 동기화코드 변경 즉시 반영 가능 node_modules 보존 (익명 볼륨)-v /app/node_modules로컬 환경과 충돌 방지컨테이너 내부 의존성 패키지 유지바인드 마운트보다 우선 적용(더 구체적인 경로) 개발 환경 개선1. Nodemon 설정package.json에 추가"devDependencies": { "nodemon": "^2.0.4"},"scripts": { .. [88] 볼륨으로 MongoDB에 데이터 지속성 추가하기 [88] 볼륨으로 MongoDB에 데이터 지속성 추가하기MongoDB 컨테이너에 데이터 지속성과 보안 추가하기 문제 인식MongoDB 컨테이너 중지/제거 시 모든 데이터 손실데이터베이스 접근에 보안 제한 없음 데이터 지속성 추가볼륨 설정docker run --name mongodb -v data:/data/db --rm -d --network goals-net mongo명명된 볼륨 data 사용MongoDB 내부 데이터 경로(/data/db)에 연결컨테이너가 제거되어도 데이터 유지작동 원리첫 실행: Docker가 볼륨 생성, 데이터 저장재실행: 기존 볼륨의 데이터 로드결과: 컨테이너 생명주기와 독립적인 데이터 유지 접근 제한 설정환경변수를 통한 인증 설정docker run --name mongodb \.. [86] 효율적인 컨테이너 간 통신을 위한 Docker 네트워크 추가하기 Docker 네트워크를 활용한 다중 컨테이너 애플리케이션 구성 Docker 네트워크 설정네트워크 생성docker network create goals-net 사용 가능한 네트워크 확인docker network ls 컴포넌트별 컨테이너 설정1. MongoDB 컨테이너docker run --name mongodb --rm -d --network goals-net mongo포트 게시(-p) 없음: 동일 네트워크 내 컨테이너만 접근 가능외부(호스트)에서 직접 접근 불필요 2. Node.js 백엔드 컨테이너docker run --name goals-backend --rm -d -p 80:80 --network goals-net goals-nodeMongoDB 접근: mongodb://mongodb:27017/c.. [81-85] Docker로 다중 컨테이너 애플리케이션 구축하기 Docker로 다중 컨테이너 애플리케이션 구축하기 애플리케이션 구성 요소MongoDB 데이터베이스데이터 저장소데이터 지속성 필요접근 제한 설정Node.js 백엔드REST API 제공로그 파일 지속성 필요소스 코드 변경 실시간 반영React 프론트엔드단일 페이지 애플리케이션(SPA)소스 코드 변경 실시간 반영백엔드 API와 통신 컴포넌트별 도커화 과정1. MongoDB 컨테이너docker run --name mongodb --rm -d -p 27017:27017 mongo공식 MongoDB 이미지 사용포트 27017 노출백그라운드 실행 2. Node.js 백엔드 컨테이너DockerfileFROM nodeWORKDIR /appCOPY package.json .RUN npm installCOPY . .EXPO.. [72-80] Docker 컨테이너 통신의 세 가지 방식과 솔루션 Docker 컨테이너 통신의 세 가지 방식과 솔루션 컨테이너-WWW 통신컨테이너에서 외부 웹/API로의 통신은 기본적으로 가능특별한 설정 없이 인터넷 상의 API에 HTTP 요청 가능 컨테이너-호스트 머신 통신문제 : 컨테이너 내에서 localhost로 호스트 머신 접근 불가해결책 : localhost 대신 host.docker.internal 사용도커가 자동으로 호스트 머신의 IP 주소로 변환 컨테이너 간 통신기본 솔루션: IP 주소 직접 사용docker container inspect [컨테이너명]으로 IP 주소 확인문제점: IP 주소가 변경될 때마다 코드/이미지 수정 필요 우아한 솔루션: Docker Networks네트워크 생성docker network create [네트워크명] 컨테이너를 네트워.. 이전 1 2 3 4 ··· 14 다음