laradock + cakePHP3로 환경 구축

6073 단어 LaraDockCakePHP
laravel뿐만 아니라 cakePHP에도 laradock 추천합니다.

laradock을 적절한 디렉토리에 git clone


$ mkdir sample_project
$ cd sample_project
$ git clone https://github.com/laradock/laradock.git

.env 파일 만들기



이번에는 이런 구성으로 가자고 생각합니다.
+ laradock
+ myapp

env-example 파일을 복사하여 .env 파일을 만듭니다.
$ cd laradock
$ cp env-example .env

docker-compose로 환경 빌드



nginx와 mysql과 phpmyadmin
$ docker-compose up -d nginx mysql phpmyadmin

컨테이너가 시작되었는지 확인


$ docker ps
CONTAINER ID        IMAGE                 COMMAND                  CREATED             STATUS              PORTS                                      NAMES
1ba965f3c20d        laradock_mysql        "docker-entrypoint.s…"   18 hours ago        Up 12 seconds       0.0.0.0:3306->3306/tcp                     laradock_mysql_1
310b880caca5        laradock_phpmyadmin   "/run.sh phpmyadmin"     18 hours ago        Up 7 seconds        9000/tcp, 0.0.0.0:8080->80/tcp             laradock_phpmyadmin_1
0781d6c8ab84        laradock_nginx        "nginx"                  18 hours ago        Up 5 seconds        0.0.0.0:80->80/tcp, 0.0.0.0:443->443/tcp   laradock_nginx_1
75a72f0e829c        laradock_php-fpm      "docker-php-entrypoi…"   18 hours ago        Up 6 seconds        9000/tcp                                   laradock_php-fpm_1
6668e7c4ef01        laradock_workspace    "/sbin/my_init"          18 hours ago        Up 12 seconds       0.0.0.0:2222->22/tcp                       laradock_workspace_1

phpmyadmin은 .env 의 PHP MY ADMIN 설정이 기본값이면 http://localhost:8080 에 넣습니다.

workspace에 들어간다


$ docker-compose exec workspace bash

cakePHP3 설치



myapp는 cakePHP를 설치할 디렉토리 이름입니다.
$ composer self-update && composer create-project --prefer-dist cakephp/app myapp

root 디렉토리를 cakePHP용으로 설정



cakePHP의 루트 디렉토리 /webroot를 설정합니다.
$ vim laradock/nginx/sites/default.conf

-  root /var/www/public;
+  root /var/www/myapp/webroot;


nginx 재부팅



루트 디렉토리 변경 사항을 반영하기 위해 nginx를 다시 시작합니다.
$ docker-compose restart nginx

intl 사용



cakePHP는 intl 확장 모듈이 필요합니까? 어른스럽게 넣어 버립니다.
$ vim laradock/.env

-  PHP_FPM_INSTALL_INTL=false
+  PHP_FPM_INSTALL_INTL=true

php-fpm의 컨테이너 재생성



intl을 활성화했으므로 다시 빌드합니다.
$ docker-compose up -d --build php-fpm

표시 확인



http://localhost 에서 cakePHP의 welcome 페이지가 표시되면 OK입니다.



DB 설정



DB 연결 설정도 수행합니다. laradock/.env 의 MYSQL 설정에 맞춥니다.
cakePHP 소스, config/app.php의 220 행 근처

config/app.php`
- 'host' => 'localhost',
- 'username' => 'my_app',
- 'database' => 'my_app',

+ 'host' => 'mysql',
+ 'username' => 'default',
+ 'database' => 'my_app',



이런 식으로 welcome 페이지의 Database 부분이 녹색 수탉 모자 (?)가되면 OK입니다.
제 경우에는, 좀처럼 mysql이 기동해 주지 않고, 이전에 빌드한 모든 docker 컨테이너와 이미지와, .laradock 도 폴더 마다 삭제해 다시 했습니다.
이 기사 에 있는 것처럼, docker의 설정을 바꿀 때 docker-compose stop 하지 않았던 것이 원인인 것 같습니다.

참고한 기사




  • Laradock에서 CakePHP 개발 환경 (nginx, php-fpm, mysql) 구축
  • Laradock에서 MySQL이 아무래도 일어나지 않는 사람 모여!



  • mysql을 빌드할 때 이런 오류가.
    ERROR: Service 'mysql' failed to build: Get https://registry-1.docker.io/v2/library/mysql/manifests/8.0: unauthorized: incorrect username or password
    

    한 번 로그 아웃하는 것이 좋다.
    컨테이너 시작시 ERROR: Service 'mysql' failed to build 에러 대응 - Qiita
    $ docker logout
    

    좋은 웹페이지 즐겨찾기