PHP 미경험자가 공부용으로 Docker로 개발 환경을 만들어 보았다

하고 싶은 일



가능한 한 자신의 PC를 더럽히지 않고 소위 LAMP 환경
(Linux, Apache, MySQL, PHP)의 개발 환경을 간편하게 구축하고 싶다.

Mac의 경우는 MAMP나 VirtualBox가 있지만 더러워져서・・・

그렇다, Docker의 공부도 겸해 Docker를 사용하자! ! !

아티팩트



Docker를 사용하여 Apache, PHP, MySQL, phpMyAdmin을 연동하고,
PHP와 MySQL 공부에 주력하는 개발 환경을 만들었습니다.

개발 환경




도구 이름
버전


OS
macOS Mojava 10.14.3

도커
Mac용 Docker 18.06.1-ce

Docker Compose
1.22.0

PHP
7.2.7-apache (Apache와 연관된 컨테이너)

MySQL
8

phpMyAdmin
4.7


프로젝트 구성



[PHP]



Docker 컨테이너의 80번 포트와 호스트 OS의 80번 포트를 연결.
MySQL과의 접속에는 mysqli 를 사용.
Docker Compose만으로는 PHP의 확장 기능을 인스톨 할 수 없기 때문에, Dockerfile로 대응.

[MySQL]



Version8부터 디폴트 인증 방식이 caching_sha2_password이므로,mysql_native_password 로 변경한다.
이 설정을 하지 않으면 MySQL에 접속할 수 없다.

사용 절차



[전제조건]


  • Docker가 설치되어 있고 실행 중입니다
  • Docker Compose가 설치되었습니다

  • Docker를 설치하지 않은 경우 Mac의 경우 다음 명령으로 도입하십시오.
    # Homebrewがインストールされていること
    $ brew install docker
    $ brew cask install docker
    $ brew install docker-compose
    
    # Clone
    $ git clone https://github.com/MasanoriIwakura/php_study.git
    
    # フォルダ移動
    $ cd php_study
    
    # コンテナ実行
    $ docker-compose up -d
    
    # 全てのコンテナが立ち上がっていることを確認
    $ docker-compose ps
             Name                       Command               State               Ports
    ------------------------------------------------------------------------------------------------
    php_study_mysql_1        docker-entrypoint.sh mysqld      Up      3306/tcp, 33060/tcp
    php_study_php_1          docker-php-entrypoint apac ...   Up      0.0.0.0:80->80/tcp
    php_study_phpmyadmin_1   /run.sh phpmyadmin               Up      0.0.0.0:8080->80/tcp, 9000/tcp
    

    [연결 확인]



    PHP의 표시 확인은
    http://localhost
    방문


    phpMyAdmin의 표시는
    http://localhost:8080
    방문



    [소스 편집 방법]


    php/html 바로 아래에 폴더나 php 파일을 작성·편집하면 됩니다.

    예를 들어 php/html/index.php 를 편집한 경우 http://localhostphp/html/sample/sample.php 를 편집한 경우에는 http://localhost/sample/sample.php 에 액세스 하여 동작 확인을 할 수 있습니다.

    또한 소스를 수정하고 저장하고 브라우저를 다시로드하기 만하면 반영 될 수 있습니다.
    Docker에서 이미지를 다시 빌드하거나 다시 배포할 필요가 없습니다.

    기타



    [MySQL 초기화]



    시작시에 mysql/sql 안에 실행한 SQL을 배치하는 것으로 자동적으로 MySQL내에 테이블을 작성하거나 초기 데이터를 투입할 수 있습니다.

    [이번에 만든 Docker 컨테이너 재구축]



    사실 이번 리포지토리 바로 아래에 Shell을 배치하고 있습니다.
    실행함으로써 영속화한 파일의 삭제, 컨테이너 삭제, 컨테이너 재구축을 한꺼번에 실시합니다.
    영구화된 파일을 삭제하지 않으려면 컨테이너를 수동으로 삭제하십시오.
    # リポジトリ直下で使用
    ./docker-clean.sh
    
    # 永続化したファイルを削除したくない場合(コンテナだけ削除)
    docker-compose stop
    docker-compose rm
    

    앞으로 더 편리하게 할 수 있으면 이 기사도 갱신합니다.

    좋은 웹페이지 즐겨찾기