PHP의 입문서 1주위를 위해, Sakut과 Docker로 Apache + MySQL + PHP + phpmyadmin의 환경 만들기

PHP 입문서를 한 번 돌고 싶기 때문에 LAMP 환경을 원합니다.



PHP력을 올리고 싶기 때문에, 입문서로부터 하려고 생각했습니다.
그러기 위해 바삭바삭하게 준비할 수 있어, 사용하게 하는 로컬 환경을 원했기 때문에, 그 메모입니다.

이번에는 docker-compose를 사용하여 환경을 구축합니다.

현재 환경


  • OS:MacOS Big Sur
  • Docker:19.03.13
  • DockerCompose:1.27.4

  • 디렉토리 구성 및 파일



    디렉토리 구성


    .
    ├── docker-compose.yml
    ├── html
    │   └── index.php
    ├── mysql
    ├── php
    │   ├── dockerfile
    │   └── php.ini
    └── phpmyadmin
    

    docker-compose.yml


    version: '3'
    
    services:
      php:
        build:
          context: ./php
          dockerfile: dockerfile
        volumes:
          - ./php/php.ini:/usr/local/etc/php/php.ini
          - ./html:/var/www/html
        ports:
          - 8080:80
      mysql:
        image: mysql:5.7
        volumes:
          - ./mysql:/var/lib/mysql
        environment:
          - MYSQL_ROOT_PASSWORD=root
          - MYSQL_DATABASE=test
          - MYSQL_USER=root
          - MYSQL_PASSWORD=root
      phpmyadmin:
        image: phpmyadmin/phpmyadmin
        environment:
          - PMA_ARBITRARY=1
          - PMA_HOST=mysql
    #      - PMA_USER=test
    #      - PMA_PASSWORD=test
        links:
          - mysql
        ports:
          - 4040:80
        volumes:
          - ./phpmyadmin/sessions:/sessions
    

    dockerfile


    FROM php:7.2-apache
    RUN apt-get update && \
      docker-php-ext-install pdo_mysql mysqli mbstring
    

    index.php


    <!DOCTYPE html>
    <html>
    <head>
        <meta charset="utf-8"/>
        <meta http-equiv="X-UA-Compatible" content="IE=edge">
        <title>php7.2-apache</title>
        <meta name="viewport" content="width=device-width, initial-scale=1">
    </head>
    <body>
    <?php phpinfo(); ?>
    </body>
    </html>
    

    php.ini


    [Date]
    date.timezone = "Asia/Tokyo"
    [mbstring]
    mbstring.internal_encoding = "UTF-8"
    mbstring.language = "Japanese"
    

    모든 오류를 표시하려면 다음을 추가하십시오.
    error_reporting = E_ALL
    

    실행 명령


    docker-compose.yml 가 있는 디렉토리로 이동하여 다음을 수행합니다.
    $ docker-compose up -d
    

    dockerfile을 변경하면
    $ docker-compose up -d --build
    

    php.ini 등의 변경을 반영하고 싶을 때는
    $ docker-compose restart
    

    동작 확인



    phpinfo 표시
    http://localhost-8080.com/


    phpmyadmin 보기
    http://localhost:4040/

    로그인 화면에서 docker-compose.yml 의 mysql 컨테이너의 정보를 기재해 로그인 할 수 있으면 OK


    집어 넣은 곳


  • 처음에는 docker-compose.ymlimage: php:7.2-apache라고 기재하고 있었지만, MySQL의 드라이버가 없어 MySQL 움직일 수 없었기 때문에, dockerflie를 작성했다
  • docker-compose.yml의 phpmyadmin 컨테이너에 PMA_USERPMA_PASSWORD를 입력하면 phpmyadmin에 성공적으로 로그인 할 수 없으며 데이터베이스를 만들 수 없으므로 주석 처리

  • 이번에 할 예정인 PHP 입문서



    PHP 입문 확인 화면 첨부의 문의 폼을 만들면서 PHP 배우기(제2판)
    htps : // 아 mz 응. 및 / 2 rz7Fr
    ※상기 환경에서 동작 확인 완료

    잘 아는 PHP의 교과서【PHP7 대응판】
    htps : // 아 mz 응. 및 / 2LhQ4mW
    ※ 아직 미착수

    참고 기사


  • docker-compose로 PHP7.2 + Apache + MySQL + phpMyAdmin 환경 구축 - Qiita
  • Docker에서 phpMyAdmin을 시작하는 데 일로 일제한 이야기 ​​| TECHFREE
  • Docker Compose를 사용하여 LAMP 환경 구축: 전편 - Qiita
  • 개발 환경을 Docker로 만들면 PDO에서 could not find driver가 나왔다 - Qiita
  • 초보자용 docker-compose 명령 역방향 - Qiita
  • 좋은 웹페이지 즐겨찾기