강좌게시판

제목 [CI4 팁공유] 일단 무작정 켜보기 - Docker를 써서
글쓴이 엽토군 작성시각 2019/03/15 14:30:30
댓글 : 2 추천 : 0 스크랩 : 0 조회수 : 1556   RSS

강좌라고 할 정도는 아니고 그냥 최근에 성공한 것을 팁 공유 차원에서 기록해 봅니다.


다들 아시다시피 Codeigniter 4의 설치 요건은 다음과 같습니다.

  • PHP 버전: >= 7.2
  • PHP 확장: php-json, php-mbstring, php-mysqlnd, php-xml, intl, libcurl

다른 건 뭐 다 좋은데 PHP 버전이 좀 걸리는 분들이 있으실 겁니다. 최신 라라벨도 7.2까지는 요구하지 않는데... CI 4 맛좀 보자고 PHP 버전을 올리자니 좀 애매하죠.

그래서 Docker를 이용해서 그냥 소스를 돌려 보는 것만 해보기로 했습니다.

도커가 뭐냐는 것은 이 문서의 설명 범위 밖에 있고 제 능력이 일천하므로 과감히 생략합니다.

 

1. 일단 CI4를 Manual Installation을 합니다.

https://codeigniter4.github.io/CodeIgniter4/installation/installing_manual.html

공식 문서에 써 있는 대로 (아주 전통적인 방식으로) zip을 다운 받아 그대로 원하는 폴더에 풀어 줍니다.

이제 CMD에서 php spark serve를 치면 이론상 PHP 내장웹서버가 돌아야 하지요. 하지만 PHP 버전이 7.1이나 그 이하라면 에러가 나고 작동을 안 할 겁니다.

 

2. docker를 설치합니다.

설치 과정은 운영체제별로 약간 다르니 생략합니다. 결과적으로, 커맨드창에서 docker info를 날렸을 때 뭐가 떠야 합니다.

 

3. docker-compose 환경을 생성합니다.

https://phpdocker.io/generator

이 사이트는 "전형적인 PHP 개발 환경"을 Docker 기반으로 짤 수 있게 파일을 만들어주는 사이트입니다.

각 입력칸에 대해서 저는 이렇게 했습니다.

  • Project Name: 영어로 된 적당한 이름
  • Base Port: 8700 (*1025 이상의 정수여야 합니다.)
  • Application Type: Generic (*기본값)
  • Max Upload Size: 100 (*기본값)
  • PHP Version: 7.3.x (*기본값)
  • Extensions: Intl, GD
  • Enable MySQL: No (*기본값)
  • Enable MariaDB: Yes
    • 추가로 커넥션 설정값을 넣어줘야 합니다.
    • 어차피 docker 컨테이너 안에서만 만들어지는 DB이므로 아무렇게나 해줘도 됩니다.
  • Postgres, Elasticsearch, Zero-config Services: 안 건드림

이렇게 하고 나서 Generate Project Archive를 누르면 zip 파일이 하나 떨어집니다.

 

4. 생성한 docker-compose 환경을 설치한 CI에 설치합니다.

먼저 1번 단계에서 수동 설치한 CI 소스의 루트에 zip 파일 압축을 풉니다.

결과적으로 docker-compose.yml 파일과 spark 파일이 같은 위치에 오게 되고, 아마도 phpdocker 폴더가 프로젝트에 새로 생기게 될 것입니다.

이제 필요한 수정을 약간 합니다. phpdocker/php-fpm/php-ini-override.ini 파일을 까보시면 설정값이 달랑 두 줄 들어가 있습니다.

다음과 같이 추가적으로 필요한 것들을 넣어줍시다.

date.timezone = Asia/Seoul
short_open_tag = On

 

5. Docker Compose를 실행하여 컨테이너를 띄웁니다.

이제 docker-compose.yml 파일이 있는 위치에서 다음 명령을 실행합니다.

docker-compose up -d

3번 단계에서 적당히 지어준 Project Name을 기반으로 한 mariadb, phpfpm, webserver 3개의 컨테이너가 뜨는 것을 볼 수 있습니다.

이제 localhost:8700 으로 접속하면 CI 4 소스가 도는 것을 볼 수 있습니다(내 로컬에 PHP 7.2를 깔지 않았는데도 말이죠).

 

파이썬에는 기본으로 딸려 있(다)는 virtualenv 같은게 PHP에는 없었는데, docker를 사용하면 간단히 프로젝트별 환경 구성을 다르게 해볼 수 있어서 좋은 것 같네요.

좀더 CI 4를 살펴보면서.. 마이그레이션 사용하는 법이나 Entity 사용하는 법 같은걸 좀더 파볼 계획입니다. ^^

 다음글 docker로 CI 3.1.10 빠르게 시작 하기 [P... (7)
 이전글 코드이그나이터 사용 가이드 part 1.1 [가이드 문... (8)

댓글

한대승(불의회상) / 2019/03/16 09:21:49 / 추천 0

좋은 정보 감사합니다.

kaido / 2019/03/19 12:30:21 / 추천 0

좋은정보 감사합니다.

간결하게 php-fpm 에다 설정 씌워서 Dockerfile 만들어 줘서 간단 하네요 ㅎㅎ

다만 안타까운것이 윈도우 도커는 버전을 좀 많이 탑니다 ㅠㅠ

PS F:\php71> docker-compose up --build -d
Pulling webserver (nginx:alpine)...
ERROR: Get https://registry-1.docker.io/v2/: net/http: request canceled while waiting for connection (Client.Timeout exceeded while awaiting headers)

윈10 Docker version 18.09.2, build 6247962 해당 버전에서는 빌드 안되는 버전이네요 ㅠㅠ