docker+php+nginx+PostgreSQL을 이용하여CakePHP의 개발 환경 구축
개요
원활하게 환경을 구축할 수 있다는 보도가 드물기 때문에 프로그램서로 공유하고 있다.
그럼에도 불구하고 저는 Laavel로 구성된nginx와php의 설정을 cake에 사용했을 뿐입니다 w
누군가를 도울 수 있었으면 좋겠어요.
전제 조건
php-fpm: 7.4
CakePHP: 任意
Nginx: 1.19.x
PostgreSQL: 12.x
apt使用
프로비저닝
종교적인 이유로 도커 관련 서류를docker 아래에 설정합니다.
.
├── .docker
│ ├── app
│ │ ├── Dockerfile
│ │ └── conf
│ │ ├── php.ini
│ │ └── docker.conf
│ ├── db
│ └── nginx
│ ├── Dockerfile
│ └── conf
│ └── default.conf
├── .git
├── .gitignore
├── README.md
└── docker-compose.yml
docker 환경 구축
docker-compose.yml
docker-compose.yml
version: '3'
services:
nginx:
container_name: nginx
build:
context: .docker/nginx
dockerfile: Dockerfile
ports:
- 80:80
volumes:
- .:/var/www/html
tty: true
depends_on:
- app
app:
container_name: app
build:
context: .docker/app
dockerfile: Dockerfile
environment:
LANG: 'ja_JP.UTF-8'
TZ: 'Asia/Tokyo'
APP_NAME: 'CakePHP'
APP_ENV: 'development'
APP_DEBUG: 'true'
APP_URL: 'http://localhost'
LOG_CHANNEL: 'stderr'
DB_CONNECTION: 'pgsql'
DB_HOST: 'db'
DB_PORT: '5432'
DB_DATABASE: 'cake_development'
DB_DATABASE_TEST: 'cake_testing'
DB_USERNAME: 'docker'
DB_PASSWORD: 'docker'
env_file:
- .env
volumes:
- .:/var/www/html
expose:
- 9000
tty: true
depends_on:
- db
db:
image: postgres:12-alpine
container_name: db
environment:
TZ: 'Asia/Tokyo'
POSTGRES_USER: 'docker'
POSTGRES_ROOT_PASSWORD: 'docker'
POSTGRES_PASSWORD: 'docker'
POSTGRES_DB: 'cake_development'
volumes:
- ./.docker/db/data:/var/lib/postgresql/data
- ./.docker/db/sql:/docker-entrypoint-initdb.d
ports:
- 5432:5432
app
주석의 일부분은cake 가져오기에 필요한 내용에 속합니다.꼭 넣어주세요!
.docker/app/Dockerfile
FROM php:7.4-fpm
ENV TZ Asia/Tokyo
ENV COMPOSER_ALLOW_SUPERUSER 1
# install Lib for composer
RUN curl -sL https://deb.nodesource.com/setup_14.x | bash - && \
apt-get update -qq && \
apt-get install -y libicu-dev &&\
apt-get install --no-install-recommends -y libpq-dev libonig-dev libxml2-dev nodejs git zip unzip && \
apt-get install --no-install-recommends -y zlib1g-dev libfreetype6-dev libpng-dev libjpeg62-turbo-dev libwebp-dev libxpm-dev && \
apt-get clean && \
rm -rf /var/cache/apt && \
npm install npm@latest -g
# add extention
RUN docker-php-ext-configure gd --with-freetype --with-jpeg --with-webp --with-xpm && \
docker-php-ext-install -j$(nproc) gd && \
docker-php-ext-install mbstring pdo pdo_pgsql json &&\
docker-php-ext-install intl
# php.conf php-fpm.conf
COPY conf/php.ini /usr/local/etc/php/php.ini
COPY conf/docker.conf /usr/local/etc/php-fpm.d/docker.conf
# install Composer
RUN curl -sS https://getcomposer.org/installer | php && \
mv composer.phar /usr/local/bin/composer && \
chmod +x /usr/local/bin/composer
WORKDIR /app
# CakePHP に必要な拡張機能
# apt-get install -y libicu-dev &&\
# docker-php-ext-install intl \
php.ini와 docker.취향에 따라.nginx
.docker/nginx/Dockerfile
FROM nginx:1.19-alpine
ENV TZ Asia/Tokyo
COPY conf/default.conf /etc/nginx/conf.d/default.conf
default.confserver {
listen 80;
# 指定先注意
root /var/www/html;
index index.php index.html;
location / {
try_files $uri $uri/ /index.php$is_args$args;
}
location ~ \.php$ {
fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_pass app:9000;
fastcgi_index index.php;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param PATH_INFO $fastcgi_path_info;
}
}
이build 환경 ok입니다.다음 명령을 사용하여 실행build에 복사하면 인용 대상과 포장의 넣는 방법 등이 좋지 않기 때문에 다시 검사하십시오 >>
docker-compose build
docker-compose up
setup
지금까지 PHP,nginx,PostgreSQL의 환경이 모두 갖추어졌기 때문에 저는 Cake PHP setup을 해보겠습니다!
// project 名sampleで作成(4.x)
docker-compose exec app composer create-project --prefer-dist cakephp/app sample
// versionを指定
docker-compose exec app composer create-project --prefer-dist cakephp/app:^4.0 {プロジェクト名}
카탈로그 이동액세스한 경우
cp -R sample/. ./
rm -rf sample/
http://localhost/=>오류가 발생할 수 있다고 생각합니다.
Database driver Cake\Database\Driver\Mysql cannot be used due to
a missing PHP extension or unmet dependency
CakePHP3은 기본적으로 mysql을 참조하는 드라이버로 설정되어 있기 때문에 참조 대상을 변경합니다.
config/app.php를 보니 다음과 같다.
'Datasources' => [
/*
* These configurations should contain permanent settings used
* by all environments.
*
* The values in app_local.php will override any values set here
* and should be used for local and per-environment configurations.
*
* Environment variable based configurations can be loaded here or
* in app_local.php depending on the applications needs.
*/
'default' => [
'className' => Connection::class,
'driver' => Mysql::class,
'persistent' => false,
'timezone' => 'UTC',
// 略
],
'test' => [
'className' => Connection::class,
'driver' => Mysql::class,
// 略
],
따라서driver 설정은 다음과 같다.'driver' => \Cake\Database\Driver\Postgres::class,
또한default뿐만 아니라test내driver도 변경합니다!상술한 절차로 완성!나는 웹 페이지 화면을 확인할 수 있다고 생각한다.
후기
어느 쪽이었으면 스텝북이 됐지만 누군가에게 도움이 됐으면 좋겠어요.
중도에 설명을 생략한 부분도 있으니 이해하기 어려운 경우에는 아래 내용을 참고하세요!
그럼 안녕히 계세요><
Reference
이 문제에 관하여(docker+php+nginx+PostgreSQL을 이용하여CakePHP의 개발 환경 구축), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://zenn.dev/snail_tanishi/articles/cakephp-docker-setup텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)