Laradock에서 Phalcon에 입문

TL;DR


Phalcon 만져보고 싶었기 때문에 Laradock에서 환경을 만들고 웹 응용 프로그램의 병아리를 만들려고했습니다.

대상


  • Laravel이라든지 알고 있지만 Phalcon은 만지지 않은 PHPer (나)
  • 사쿠토와 Phalcon 만지고 싶은 사람

  • 준비


  • macOS 10.14.5
  • docker 18.09.2

  • 디렉토리 구성



    다음과 같은 가정입니다.
    /path/to
    ├── phalcon-sample
    └── laradock
    

    phalcon-sample는 프로젝트 이름 등으로 적절하게 읽어주십시오.

    절차


    Laradockworkspace 컨테이너를 통해 Phalcon 프로젝트를 만듭니다.

    Laradock 소개


    $ cd /path/to
    $ git clone https://github.com/laradock/laradock.git
    Cloning into 'laradock'...
    ...
    Resolving deltas: 100% (4755/4755), done.
    

    Laradock 에 대한 자세한 사항은 할애하므로 필요한 분은 이건 봐 주세요

    .env 만들기


    $ cd /path/to/laradock
    $ cp env-example .env
    $ vi .env
    $ diff -u env-example .env
    ...
    -WORKSPACE_INSTALL_PHALCON=false
    +WORKSPACE_INSTALL_PHALCON=true
    ...
    -PHP_FPM_INSTALL_PHALCON=false
    +PHP_FPM_INSTALL_PHALCON=true
    ...
    -MYSQL_VERSION=latest
    +MYSQL_VERSION=5.7
    
    .env의 변경은 상기 3 개소입니다

    MYSQL_VERSION 에 대해서는 본제와 별로 관계가 없기 때문에 이건 참고로 「훗」정도로 괜찮습니다

    docker 컨테이너 시작


    workspace 컨테이너 만 지정하여 시작합니다.
    $ docker-compose up -d workspace
    Creating network "laradock_frontend" with driver "bridge"
    Creating network "laradock_backend" with driver "bridge"
    Creating network "laradock_default" with the default driver
    Creating laradock_docker-in-docker_1 ... done
    Creating laradock_workspace_1        ... done
    $ docker-compose ps
               Name                      Command          State          Ports        
    ----------------------------------------------------------------------------------
    laradock_docker-in-docker_1   dockerd-entrypoint.sh   Up      2375/tcp            
    laradock_workspace_1          /sbin/my_init           Up      0.0.0.0:2222->22/tcp
    

    phalcon/devtools 설치 및 Phalcon 프로젝트 만들기



    시작된 workspace 컨테이너에 phalcon-devtools을 설치합니다.
    phalcon-devtoolsPhalcon 공식적으로 제공되는 편리한 스크립트입니다.
    Laravel 로 말하는 곳 artisan 같은 녀석입니까? (잘 모르겠어요)

    공식 절차 와는 조금 다릅니다만, 한 번 컨테이너내의 글로벌하게 인스톨 해 프로젝트 작성합니다(※ 나중에 프로젝트내에서 인스톨 다시 합니다)
    $ docker-compose exec --user=laradock workspace bash
    # ここから コンテナ内での作業です
    $ composer global require phalcon/devtools
    Changed current directory to /home/laradock/.composer
    Using version ^3.4 for phalcon/devtools
    ./composer.json has been updated
    ...
    Writing lock file
    Generating autoload files
    $ php ~/.composer/vendor/bin/phalcon.php project phalcon-sample
    
    Phalcon DevTools (3.4.0)
    
    
      Success: Controller "index" was successfully created.  
    
    /var/www/phalcon-sample/app/controllers/IndexController.php
    
      Success: Project 'phalcon-sample' was successfully created.
    Please choose a password and username to use Database connection.Used default:'root' without password.  
    
    $ exit
    exit
    # ここまで コンテナ内での作業です
    $ docker-compose down
    Stopping laradock_workspace_1        ... done
    Stopping laradock_docker-in-docker_1 ... done
    Removing laradock_workspace_1        ... done
    Removing laradock_docker-in-docker_1 ... done
    Removing network laradock_frontend
    Removing network laradock_backend
    Removing network laradock_default
    
    phalcon-devtools로 프로젝트를 만들면 컨테이너가 한 번 빠져 나와 버립니다.

    로컬 동작 확인


    /path/to/phalcon-sample 디렉토리가 호스트 측에도 완성되어 있어야하므로 Laradock의 마운트 설정을 약간 변경합니다.
    $ vi .env
    $ diff -u env-example .env
    ...
    -APP_CODE_PATH_HOST=../
    +APP_CODE_PATH_HOST=../phalcon-sample
    ...
    -WORKSPACE_INSTALL_PHALCON=false
    +WORKSPACE_INSTALL_PHALCON=true
    ...
    -PHP_FPM_INSTALL_PHALCON=false
    +PHP_FPM_INSTALL_PHALCON=true
    ...
    -MYSQL_VERSION=latest
    +MYSQL_VERSION=5.7
    

    앞의 3 개소 이외에 APP_CODE_PATH_HOST 변경

    기본적으로 /path/to를 컨테이너에 마운트했지만 /path/to/phalcon-sample를 마운트하려고합니다.
    .env를 변경하면 workspace 이외에 nginxmysql도 함께 시작됩니다.
    $ docker-compose up -d workspace nginx mysql
    Creating network "laradock_frontend" with driver "bridge"
    Creating network "laradock_backend" with driver "bridge"
    Creating network "laradock_default" with the default driver
    Creating laradock_mysql_1            ... done
    Creating laradock_docker-in-docker_1 ... done
    Creating laradock_workspace_1        ... done
    Creating laradock_php-fpm_1          ... done
    Creating laradock_nginx_1            ... done
    

    무사히 일어나면이 시점에서 localhost에서 작동을 확인할 수 있다고 생각합니다.


    phalcon-devtools는 나중에 사용할 것이라고 생각하므로 프로젝트에 다시 설치하십시오.
    $ docker-compose exec --user=laradock workspace bash
    # ここから コンテナ内での作業です
    $ composer require --dev phalcon/devtools
    Using version ^3.4 for phalcon/devtools
    ./composer.json has been created
    ...
    Writing lock file
    Generating autoload files
    $ exit
    exit
    

    결국 내용은 이런 느낌이 든다고 생각합니다.
    $ ll phalcon-sample/
    total 72
    drwxr-xr-x   8 user  group    256  6 21 12:22 app/
    drwxr-xr-x   2 user  group     64  6 21 12:22 cache/
    -rw-r--r--   1 user  group     66  6 21 12:33 composer.json
    -rw-r--r--   1 user  group  26968  6 21 12:33 composer.lock
    -rw-r--r--   1 user  group    123  6 21 12:22 index.html
    drwxr-xr-x   9 user  group    288  6 21 12:22 public/
    drwxr-xr-x  12 user  group    384  6 21 12:33 vendor/
    

    요약


    phalcon-devtools 주위에서 조금 달라 붙었습니다만, 우선 최종형은 깨끗한 형태에 들어갔다고 생각합니다…

    좋은 웹페이지 즐겨찾기