
Docker compose로 PHP(phalcon) + Nginx + Mysql 올리기 2부
Docker안녕하세요 Lovefield입니다.
이전 글에 이어서 docekr-compose up -d
가 잘 동작 하셨나요? 제대로 실행하셨다면 localhost에 접속하고나서 nginx의 404 페이지가 보일 겁니다. 아직 아무런 코드가 준비되지 않았으니 당연하겠죠?
phalcon폴더에 composer.json 을 생성해봅시다.
{
"name": "phalcon/blog",
"description": "Phalcon project!",
"license": "proprietary",
"require": {
"php": "^7.4",
"phalcon/devtools": "v4.0.3",
"phalcon/cphalcon": "4.0.6"
}
}
docker exec -it php /bin/bash
명령어를 통해 “php”컨테이너에 접근합니다.컨테이너 내부에서 composer install
명령어로 phalcon 프로젝트를 위한 기반 라이브러리 다운로드 합니다.다운로드가 끝나면 명령어를 쓸 수 있어야 하는데, 버그인지 명령어를 사용할수 없으므로 직접 실행파일을 찾아서 사용해야 합니다.
vendor/phalcon/devtools/phalcon
을 사용하면 phalcon명령어가 실행됩니다.

vendor/phalcon/devtools/phalcon create-project blog
를 통해 phalcon 프로젝트를 생성합니다. 그러면 phalcon폴더 안에 blog프로젝트가 생성되는데요. 저희는 phalcon폴더를 프로젝트로 사용할것이기 때문에 파일을 전부 phalcon폴더위치로 옮겨줍니다.

이제 localhost에 접속하면 다음과 같은 화면이 뜰겁니다

이제 phalcon을 이용한 화면은 접근이 가능해졌습니다. 마지막으로 DB를 설정해야하는데요. 저는 개인적으로 Mysql Workbench를 사용합니다.

위와같이 설정한후 Store in Keychain을 통해 root비밀번호를인 root_pw를 입력해줍니다.

정상적으로 동작하는것을 확인 할 수 있습니다.DB가 정상인걸 확인했으니 Phalcon에서 db에 연결 할 수 있도록 “phalcon/app/config/config.php”를 수정해줍니다.
<?php
defined('BASE_PATH') || define('BASE_PATH', getenv('BASE_PATH') ?: realpath(dirname(__FILE__) . '/../..'));
defined('APP_PATH') || define('APP_PATH', BASE_PATH . '/app');
return new \Phalcon\Config([
'database' => [
'adapter' => 'Mysql',
'host' => 'mysql:3306',
'username' => 'root',
'password' => 'root_pw',
'dbname' => 'app',
'charset' => 'utf8',
],
'application' => [
'appDir' => APP_PATH . '/',
'controllersDir' => APP_PATH . '/controllers/',
'modelsDir' => APP_PATH . '/models/',
'migrationsDir' => APP_PATH . '/migrations/',
'viewsDir' => APP_PATH . '/views/',
'pluginsDir' => APP_PATH . '/plugins/',
'libraryDir' => APP_PATH . '/library/',
'cacheDir' => BASE_PATH . '/cache/',
'baseUri' => '/',
]
]);
이제 모든 설정은 끝났습니다. DB가 연결된 하나의 Phalcon 프로젝트가 생성되었습니다.