초보자 | docker-compose | PHP + Nginx + MySQL

docker-compose.yml 파일만으로 php 환경을 쉽게 구축할 수 없는가 하고 생각해 조사해 보았습니다. (불행히도 docker-compose.yml 파일만으로는 좋지 않았지만 ...)

존경하는 기사



이 기사를 작성함에 있어서, 참고로 해 주신 기사입니다.
본건, 같은 기존 기사를 답습하는 내용이 됩니다.

Docker로 PHP 개발 환경 구축(PHP+MySQL+Nginx)
Docker + Nginx + PHP-FPM이라면 40 초 정도로 환경을 준비 할 수있는 docker-compose가 즐거워졌습니다.

하고 싶은 것



docker를 사용하여 로컬 환경에서 php를 사용하고 싶습니다.

한 일



1) docker-compose.yml 준비



아래 코피 페로 OK입니다.

docker-compose.yml
version: "3"
services:
  db:
    image: mysql:5.7
    volumes:
      - ./db/mysql:/var/lib/mysql
    restart: always
    environment:
      MYSQL_ROOT_PASSWORD: root_pass_fB3uWvTS

  phpmyadmin:
    image: phpmyadmin/phpmyadmin:latest
    restart: always
    ports: ["8888:80"]
    depends_on: ["db"]

  php:
    image: php:7.4-fpm
    volumes:
      - ./nginx/html:/usr/share/nginx/html
      - ./php/php.ini:/usr/local/etc/php/conf.d/php.ini
    depends_on: ["db"]

  nginx:
    image: nginx:latest
    volumes:
      - ./nginx/conf.d/default.conf:/etc/nginx/conf.d/default.conf
      - ./nginx/html:/usr/share/nginx/html
    restart: always
    ports: ["8080:80"]
    depends_on: ["php"]

2) 우선 docker-compose up



docker-compose.yml 파일이 있는 디렉토리에서 docker-compose up -d 해보십시오. 오류가 발생합니다.

오류가 발생했는지 확인한 후 docker-compose down에서 중지하십시오.



오류가 발생한 이유는 nginx: 서비스에서 사용하는 default.conf 파일이 클라이언트 측에 없기 때문입니다.

default.conf 파일을 준비해야 합니다.

3) 【중요】 nginx 용 default.conf 파일 준비



default.conf 파일을 준비합니다.

default.conf
server {
    listen       80;
    server_name  localhost;
    root   /usr/share/nginx/html;
    index  index.php index.html;

    location / {
        try_files $uri $uri/ /index.php$is_args$args;
    }

    location ~ [^/]\.php(/|$) {
        fastcgi_pass php:9000;
        fastcgi_index index.php;    
        fastcgi_param SCRIPT_FILENAME  $document_root$fastcgi_script_name;
        include       fastcgi_params;
    }
}

4) default.conf 파일을 저장할 위치



위의 단계 (2)에서 docker-compose up -d를 한 후에라면 docker-compose.yml 파일이있는 디렉토리에 nginx php db라는 세 개의 디렉토리가 태어날 것입니다.



디렉토리 nginx / conf.d에 default.conf 파일을 저장하십시오.

"default.conf"라는 디렉토리가 먼저 존재하는 경우 삭제하십시오 (교환하십시오)

5) 다시 docker-compose up



다시 docker-compose up -d하십시오. 이번에는 잘 일어난 것이 아닐까요?



6) 확인해 본다





동작을 확인하려면 디렉토리 nginx / htmlindex.php 파일을 두십시오. ( index.php 파일의 내용은 무엇이든 상관 없습니다)

index.php 예제
<?php
echo phpinfo();

브라우저에서 http://localhost:8080/에 액세스하여 표시되면 확인 완료입니다.



보충



데이터베이스와 phpMyAdmin은 필요하지 않습니다.



위의 docker-compose.yml 에는 개인적인 사정으로 mysql과 phpmyadmin를 넣고 있습니다만, php 환경을 만드는 목적만이면 불필요한 것입니다.
따라서 서비스 db:phpmyadmin:는 삭제하고 OK입니다. 그러나 서비스를 삭제하려면 php:에 있는 depends_on: ["db"]를 삭제하는 것을 잊지 마십시오.

phpMyAdmin에 액세스하는 경우 http://localhost:8888/입니다.
사용자 이름root, 암호root_pass_fB3uWvTS로 로그인할 수 있어야 합니다.



nginx−default.conf의 기술에 대해서



이쪽의 참고 사이트가 매우 공부가 되었습니다.

참고 사이트: nginx 시리즈 네 번째 : nginx 설정, 2 - 가상 서버 설정
참고 사이트: nginx 시리즈 5 번째 : nginx 설정, 3 - location 지시어

nginx와 PHP-FPM 간의 관계 이해



이쪽의 참고 사이트가 매우 공부가 되었습니다.

참고 사이트: nginx와 PHP-FPM의 작동 방식을 제대로 이해하면서 PHP 실행 환경 구축

FastCGI는 무엇입니까?



이쪽의 참고 사이트가 매우 공부가 되었습니다.

참고 사이트: 조사해야 잠을 잘 수 없다! 라고 조사하면 불필요하게 잠들 수 없게 된 소켓의 이야기

좋은 웹페이지 즐겨찾기