섹션 8 - Laravel & PHP 도커화 프로젝트
Laravel & PHP 앱에 대한 간단한 설명
Application Container
MySQL Database
PHP Interpreter
Nginx Web Server
Utility Container
npm: 반환하는 뷰에 자바스크립트 사용하는 경우
Laravel Artisan: 데이터베이스 초기 데이터 관련 설정
Composer: Laravel 애플리케이션을 생성, 써드파티 패키지 관리
도커화
docker-compose.yaml에 services에 같은 indent로 컨테이너를 선언하면 굳이 네트워클 설정을 하지 않아도, 컨테이너들끼리 기본적으로 같은 네트워크를 사용한다.
Nginx 컨테이너 추가
Web Server 역할
요청 처리 설정에 대한 Nginx conf 파일 (포트, 리다이렉션 등)을 생성
docker-compose.yaml 파일에 추가해야 하는 사항
image: 도커 허브에서 Nginx 이미지 가져오기
ports: Nginx의 기본 포트 80을 로컬 호스트 머신의 포트와 연결
volumes:
(바인드 마운트1): 웹 서버로 들어오는 요청은 PHP 컨테이너에 넘겨서 처리해야 하니까 PHP 소스 코드(로컬 호스트 머신에도 있는)가 웹 서버에도 노출되어야 함
(바인드 마운트2): 요청 처리 설정에 대한 Nginx conf 파일 (포트, 리다이렉션 등)을 컨테이너 내부에 마운트
배포 시에는 Nginx conf 파일을 컨테이너 내부에 복사하는 방식으로 커스텀 Nginx 이미지를 이용하는 방식을 사용
PHP 컨테이너 추가
PHP Interpreter 역할
PHP dockerfile을 생성
PHP에는 실행되는 디폴트 명령어가 존재하므로 끝에 CMD, ENTRYPOINT 등은 작성하지 않아도 된다. -> 디폴트 명령을 사용
docker-compose.yaml 파일에 추가해야 하는 사항
build: 커스텀 PHP 이미지 가져오기
volumes: (바인드 마운트1) 로컬 호스트 머신에 있는 PHP 소스 코드를 PHP 컨테이너에도 연결
delegated 옵션을 사용하면 컨테이너가 데이터를 기록할 때 그 결과를 호스트 머신에 즉시 반영하지 않고 Batch로 처리 -> 속도 향상, 물론 안정성은 저하
ports: PHP의 기본 포트 9000을 로컬 호스트 머신 포트에 연결
MySQL 컨테이너 추가
MySQL 환경변수 파일 생성
데이터베이스 이름, 유저 이름, 비밀번호 등 환경변수 설정
docker-compose.yaml 파일에 추가해야 하는 사항
image: 도커 허브에서 MySQL 이미지 가져오기
env_file: 로컬 호스트 머신에 있는 MySQL 환경변수 파일 위치 기재
Composer 유틸리티 컨테이너 추가
Laravel 애플리케이션을 생성, 써드파티 패키지 관리
Composer dockerfile 생성
docker-compose.yaml 파일에 추가해야 하는 사항
build: 커스텀 Composer 이미지 가져오기
volumes: (바인드 마운트1) 로컬 호스트 머신에 있는 PHP 소스 코드를 Composer 컨테이너에도 연결
Composer 유틸리티 컨테이너로 Laravel 앱 만들기
그외 유틸리티 컨테이너 추가
Last updated