PHP+Nginx+도커

10746 단어 dockernginxphpxdebug
때때로 나는 처음부터 프로젝트를 만들어야 하지만 때로는 환경을 만드는 데 많은 시간을 낭비하게 되므로 더 쉽게 하기 위해 docker를 사용하여 php 및 nginx로 준비된 것을 남겨 둘 것입니다.

읽어보기



프로젝트에 README를 추가하여 시작하고 프로젝트가 진행됨에 따라 정말 멋지게 보일 때까지 편집합니다.

touch README.md

메이크파일



이제 Makefile를 사용할 폴더에 도커를 구성해 보겠습니다.

touch Makefile

도커 작성



이제 docker 폴더를 만들고 그 안에 docker-composer.yml 파일만 만들어 보겠습니다.

mkdir docker && touch docker-composer.yml

docker-compose.yml에는 현재 nginx와 php-fpm만 있습니다.

version: "3.9"
name: default
services:
 nginx_default:
   container_name: nginx_default
   image: nginx:1.17.8
   ports:
     - 80:80
   volumes:
     - ./default.conf:/etc/nginx/conf.d/default.conf
     - ../:/var/www
   links:
     - php_default
 php_default:
   container_name: php_default
   build: ./php
   working_dir: /var/www
   volumes:
     - ../:/var/www

💡특정 조직을 갖도록 컨테이너의 이름을 바꾸는 것을 좋아한다는 것을 기억하고 이 프로젝트는 기본값이므로 그대로 두겠습니다{imagename}_default.

💡프로젝트 이름으로 .env 파일을 넣으면 orfan 컨테이너 생성을 피하십시오.

COMPOSE_PROJECT_NAME=mvc

원하는 경우(내가 선호하는 경우) 프로젝트에 이름을 추가하면 더 간단하고 체계적으로 됩니다.

엔진엑스



또 하나의 구성은 docker 폴더에 넣을 default.conf입니다.

server {
   listen 80;

   server_name default.localhost;
   error_log  /var/log/nginx/error.system-default.log;
   access_log /var/log/nginx/access.system-default.log;
   root /var/www/public;

   index index.html index.htm index.php;

   charset utf-8;

   location / {
       #try to get file directly, try it as a directory or fall back to modx
       try_files $uri $uri/ @mod_rewrite;
   }

   location @mod_rewrite {
       #including ? in second rewrite argument causes nginx to drop GET params, so append them again
       rewrite ^/(.*)$ /index.php?route=/$1;
   }

       # You may need this to prevent return 404 recursion.
   location = /404.html {
       internal;
   }

   location ~ \.php$ {
       try_files $uri =404;
       fastcgi_split_path_info ^(.+\.php)(/.+)$;
       fastcgi_pass php_default:9000;
       fastcgi_read_timeout 6000;
       fastcgi_index index.php;
       include fastcgi_params;
       fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
       fastcgi_param PATH_INFO $fastcgi_path_info;
   }
}

💡이름을 기본값으로 변경하고 있음을 기억합니다.

Xdebug 및 컴포저



저는 xdebug로 디버그하는 것을 좋아하기 때문에 작성기와 함께 준비하여 php dockerfile이 다음과 같이 보이도록 할 것입니다.

# Image and version
FROM php:7.4-fpm

# Call PHP images script `docker-php-ext-install` and install language extensions
RUN docker-php-ext-install pdo_mysql

# copy the Composer PHAR from the Composer image into the PHP image
COPY --from=composer /usr/bin/composer /usr/bin/composer

# Install xdebug
RUN pecl install xdebug && docker-php-ext-enable xdebug
COPY xdebug.ini /usr/local/etc/php/conf.d/xdebug.ini

및 컨테이너에 복사될 xdebug.ini 파일

[xdebug]
xdebug.mode=debug
xdebug.start_with_request=yes
xdebug.client_host=host.docker.internal


완료하기 전에 다음과 같이 make를 조정해 보겠습니다.

up:
    docker-compose up -d

stop:
    docker-compose stop

destroy:
    docker-compose down

build:
    docker-compose up --build -d


docker 프로젝트가 별도의 폴더에 있으므로 makefile이 찾기 위해 다음과 같이 간단하게 .env 파일을 만들고 la 파일을 추가하면 됩니다.

# Docker
COMPOSE_FILE=docker/docker-compose.yml


작곡가.json



마지막으로 내가 psr-4를 사용한다는 것을 알리기 위해 composer.json 파일을 생성하여 자동 로드가 준비되도록 합시다.

{
   "autoload": {
       "psr-4": {
           "App\\": "app/"
       }
   }
}
index.php를 생성하여 nginx 구성 파일에서와 같이 public이라는 폴더를 찾고 있으므로 모든 것이 제대로 작동하는지 확인하고 public 폴더에 생성해야 합니다.

mkdir public && touch index.php

그리고 index.php에서 우리는

<?php

require __DIR__ . '/../vendor/autoload.php';

phpinfo();

결론



이제 우리는 할 일만 남았다

make build
make composer

엑스트라


gitignore



git에 프로젝트를 제출하기 전에 .gitignore 파일을 추가하고 공급업체 폴더에 알리는 것을 잊지 마십시오.

touch .gitignore

그리고 나는 항상 vscode를 사용하므로 자동으로 생성되는 폴더도 알려줄 것입니다.

vendor
.vscode

편집 구성



나는 또한 editorconfig를 사용하고 싶지만 그것을 사용하기 전에 vscode 저장시 형식을 활성화하는 것을 좋아합니다. 먼저 vscode 설정으로 이동하십시오.Code > Preferences > Settings e ative a função “Format on Save”
마지막으로 editorconfig 확장을 설치합니다.

지금은 이 구성을 사용하겠습니다.




특허



마지막으로 이 프로젝트가 열려 있으므로 라이선스를 MIT로 남겨두겠습니다



프로젝트



이 프로젝트를 다음 프로젝트의 템플릿으로 사용하려면 다음으로 이동하세요.



https://github.com/walternascimentobarroso/php-nginx-docker



<시간/>

읽어 주셔서 감사합니다!



질문, 불만 또는 팁이 있는 경우 여기 댓글에 남겨주세요. 기꺼이 답변해 드리겠습니다!

😊😊 만나요! 😊😊



<시간/>

지원 해줘





Github - WalterNascimentoBarroso

Codepen - WalterNascimentoBarroso

좋은 웹페이지 즐겨찾기