Skip to content

Latest commit

 

History

History
92 lines (68 loc) · 5.35 KB

도커와 컴포즈를 이용한 개발환경 구축.md

File metadata and controls

92 lines (68 loc) · 5.35 KB

도커와 컴포즈를 이용한 개발환경 구축 회고

본 문서는 공통 개발환경 구축을 위해 도커와 도커 컴포즈를 이용한 개발환경 구축에 대한 회고를 작성한 문서입니다.

사용 기술 및 환경 :

  • Mac OS
  • Docker
  • Docker Compose
  • Alpine Linux
  • Rocky Linux
  • MariaDB
  • PostgreSQL
  • Redis
  • MongoDB
  • PHP 7.3
  • PHP 8.2
  • PHP-FPM
  • Nginx

서론

기존 PHP 7.3 버전에 프레임워크 없이 개발된 서비스를 운영중이었으며 해당 서비스의 개발환경은 개발자 개개인의 로컬 환경에 맞춰 개발되어 있었습니다.

기존 운영중인 서비스의 사용자 수가 증가하면서 기존 서비스의 개편 및 신규 서비스의 개발이 필요하게 되었고 이에 따라 PHP 8.2 버전과 Laravel 프레임워크를 사용하여 새로운 버전의 서비스를 개발하기로 결정하였습니다.

하지만 기존 서비스의 개발 환경이 제각각이고 비 개발자들의 개발 환경 세팅 또한 지원해야하는 상황으로 인해 개발환경을 통합하고 표준화하여 개발자가 아니더라도 쉽게 개발환경을 구축할 수 있도록 도커와 도커 컴포즈를 이용한 개발환경 구축을 하기로 결정하였습니다.

이를 통해 개발자 개개인의 로컬 환경에 맞춰 개발되던 기존의 방식에서 벗어나 통합된 개발환경을 구축하여 개발자가 아니더라도 쉽게 개발환경을 구축할 수 있도록 하기 위한 목적으로 본 문서를 작성하게 되었습니다.

도커 컴포즈 파일 구조

다음은 도커 컴포즈 파일의 구조입니다.

.
├── .gitignore
├── local-databases
│   ├── mariadb
│   ├── postgres
│   └── docker-compose.yml
└── local-php
    ├── .docker
    │   ├── docker-compose.yml
    │   ├── Dockerfile.php73
    │   ├── Dockerfile.php82
    │   ├── cache.conf
    │   ├── error.conf
    │   ├── nginx.conf
    │   └── php.conf
    └── project
  • local-databases : 로컬 환경에서 사용할 데이터베이스를 구축하기 위한 디렉토리
  • local-databases/mariadb : MariaDB 데이터를 저장하기 위한 디렉토리
  • local-databases/postgres : PostgreSQL 데이터를 저장하기 위한 디렉토리
  • local-databases/docker-compose.yml : 데이터베이스 환경을 구축하기 위한 도커 컴포즈 파일
  • local-php : 로컬 환경에서 사용할 PHP 환경을 구축하기 위한 디렉토리
  • local-php/.docker : PHP 환경을 구축하기 위한 도커 컴포즈 파일 및 설정 파일을 모아둔 디렉토리
  • local-php/.docker/docker-compose.yml : PHP 환경을 구축하기 위한 도커 컴포즈 파일
  • local-php/.docker/Dockerfile.php73 : PHP 7.3 버전을 위한 도커 파일
  • local-php/.docker/Dockerfile.php82 : PHP 8.2 버전을 위한 도커 파일
  • local-php/.docker/cache.conf : Nginx 캐시 설정 파일
  • local-php/.docker/error.conf : Nginx 에러 페이지 설정 파일
  • local-php/.docker/nginx.conf : Nginx 설정 파일
  • local-php/.docker/php.conf : Nginx PHP-FPM 설정 파일
  • local-php/project : 프로젝트 소스코드를 저장하기 위한 디렉토리

상세한 내용은 Local PHP 환경 구성Local Databases 환경 구성에서 확인하실 수 있습니다.

Database 구조

데이터베이스 환경의 경우 하나의 프로젝트만을 위한 것이 아닌 다른 프로젝트에서도 보편적으로 사용할 수 있는 것을 목표로 하였습니다.

그로 인해 여러 종류의 데이터베이스를 구축하였으며 데이터베이스 접속 정보를 통일하여 다른 프로젝트에서도 사용할 수 있도록 하였습니다.

또한 데이터베이스 환경을 구축할 때는 데이터베이스의 데이터를 저장하기 위한 디렉토리를 별도로 생성하여 데이터베이스를 더 쉽게 삭제하거나 백업할 수 있도록 하였습니다.

PHP 환경 구축

PHP 환경의 경우 기존 운영중인 서비스의 PHP 7.3 버전과 새로운 서비스의 PHP 8.2 버전을 구축하였으며 PHP-FPM과 Nginx를 사용하여 구축하였습니다.

PHP 환경 구축 시 Nginx의 기본 설정을 위해 따로 설정 파일들을 만들어 추가하였으며 소스 코드를 컨테이너 내부에 마운트하여 개발자가 소스 코드를 수정할 때 마다 컨테이너를 재시작하지 않아도 되도록 하였습니다.

또한 도커 파일에 systemd 설정을 추가하여 도커 컨테이너 내부에서 추가적인 환경 세팅이 가능하도록 구현 하였습니다.

마치며

해당 프로젝트는 단순히 도커와 도커 컴포즈를 설치한 뒤 도커 컴포즈 파일을 실행하는 것만으로 개발 환경을 구축할 수 있도록 하였으며 이를 통해 개발자가 아니더라도 쉽게 개발 환경을 구축할 수 있도록 하는 것을 목표로 하였습니다.

또한 하나의 프로젝트만을 위한 것이 아닌 다른 프로젝트에서도 보편적으로 사용할 수 있는 것을 목표로 하여 개발 환경 구축 시 다양한 프로젝트에서 사용할 수 있도록 하였습니다.

도커와 도커 컴포즈, Linux 환경에 대한 이해도를 높힐 수 있었던 좋은 경험이었습니다.