Docker Compose를 사용하여 PHP 개발 환경을 만드는 방법: DigitalOcean Room 키트

Docker Compose를 사용하여 PHP 개발 환경을 만드는 방법: DigitalOcean Room 키트

2022-06-01 last update

13 minutes reading PHP Laravel Container Workshop Kits Docker
Docker Compose Workshop 키트 재료를 사용하여 PHP 개발 환경을 만드는 방법
이 작업장 키트는 기술 관람객이 Docker Compose를 숙지하고 컨테이너를 사용하여 Laravel 응용 프로그램의 작업 개발 환경을 설정하는 것을 배울 수 있도록 설계되었습니다.
그 목적은 강연자에게 PHP 개발 환경에서 행사를 주관하고 제공할 수 있도록 완전한 자원을 제공하는 것이다introductory talk on Docker Compose.여기에는 다음이 포함됩니다.
  • Slides and speaker notes에는 실시간 프레젠테이션 옵션으로 실행할 수 있는 명령이 포함되어 있습니다.이번 강연은 약 40분 동안 계속된다.
  • 프레젠테이션 응용 프로그램 코드와 다른 파일을 포함하는 GitHub repository 파일은 Docker와 Docker Compose를 사용하여 PHP 개발 환경을 시작하고 실행하는 데 필요합니다.
  • 이 강좌는 사용자가 Docker Compose를 사용하여 용기에서 Travellist demo Laravel 응용 프로그램을 실행하는 방법을 지도합니다.
  • 이 안내서는 추가 세부 사항과 설명을 통해 담화 프레젠테이션을 보충하는 데 목적을 두고 있다.

    소개


    이 강좌는 How To Create PHP Development Environments with Docker Compose Slide Deck 슬라이드와 강연자 노트를 위해 설계된 것으로 How To Set Up Laravel with Docker Compose on Ubuntu 20.04 안내서에서 상세하게 논의한 설정을 어떻게 사용하는지 보여 줍니다. Docker와 Docker Compose를 사용하여 프레젠테이션 Laravel 응용 프로그램을 시작하고 실행하는지 보여 줍니다.
    참고: 이 자료는 Docker Compose를 사용하여 PHP 개발 환경을 만드는 방법을 보여 줍니다.우리의 프레젠테이션은 LEMP 서버에서 실행되는 Laravel 응용 프로그램을 포함하지만, 독자들이 자신의 수요를 만족시키기 위해 포함된 설정을 수정하고 조정하도록 권장합니다.

    선결 조건


    본 강좌를 배우려면 다음이 필요합니다.
  • Ubuntu 20.04 로컬 컴퓨터나 개발 서버에 sudo 권한이 있는 비root 사용자로 접근하거나 최소 1GB의 RAM을 사용할 수 있습니다.원격 서버를 사용하는 경우 사전 예방적 방화벽을 설치하는 것이 좋습니다.이것들을 설정하려면 저희 Initial Server Setup Guide for Ubuntu 20.04 를 참조하십시오.
  • How To Install and Use Docker on Ubuntu 20.04단계 1과 2에 따라 로컬 컴퓨터 또는 개발 서버에 Docker를 설치합니다.
  • 1단계에 따라 로컬 컴퓨터 또는 개발 서버에 Docker Compose를 설치합니다.
  • 1단계 - 프레젠테이션 어플리케이션 다운로드


    시작하려면 How To Install and Use Docker Compose on Ubuntu 20.04 응용 프로그램의 버전tutorial-4.0.3을 다운로드하십시오. 여기에는 이 작업 도구 패키지에 사용되는 응용 프로그램 파일과 Docker Compose 설정이 포함되어 있습니다.
    1. curl -L https://github.com/do-community/travellist-laravel-demo/archive/tutorial-4.0.3.zip --output travellist.zip
    다음으로 로컬 컴퓨터 또는 개발 서버에 유틸리티 unzip 가 설치되지 않은 경우 유틸리티를 설치합니다.
    1. sudo apt install unzip
    패키지 압축을 풀고 새로 만든 디렉토리로 이동합니다.
    1. unzip travellist.zip
    2. cd travellist-laravel-demo-tutorial-4.0.3
    이제 ls 명령을 실행하여 클론 저장소의 내용을 확인할 수 있습니다.
    1. ls -l --group-directories-first
    다음 출력을 받게 됩니다.
    ansible laravel 프레젠테이션
    total 256
    drwxrwxr-x 6 sammy sammy   4096 mei 14 16:16 app
    drwxrwxr-x 3 sammy sammy   4096 mei 14 16:16 bootstrap
    drwxrwxr-x 2 sammy sammy   4096 mei 14 16:16 config
    drwxrwxr-x 5 sammy sammy   4096 mei 14 16:16 database
    drwxrwxr-x 4 sammy sammy   4096 mei 14 16:16 docker-compose
    drwxrwxr-x 5 sammy sammy   4096 mei 14 16:16 public
    drwxrwxr-x 6 sammy sammy   4096 mei 14 16:16 resources
    drwxrwxr-x 2 sammy sammy   4096 mei 14 16:16 routes
    drwxrwxr-x 5 sammy sammy   4096 mei 14 16:16 storage
    drwxrwxr-x 4 sammy sammy   4096 mei 14 16:16 tests
    -rwxr-xr-x 1 sammy sammy   1686 mei 14 16:16 artisan
    -rw-rw-r-- 1 sammy sammy   1501 mei 14 16:16 composer.json
    -rw-rw-r-- 1 sammy sammy 181665 mei 14 16:16 composer.lock
    -rw-rw-r-- 1 sammy sammy   1016 mei 14 16:16 docker-compose.yml
    -rw-rw-r-- 1 sammy sammy    737 mei 14 16:16 Dockerfile
    -rw-rw-r-- 1 sammy sammy   1013 mei 14 16:16 package.json
    -rw-rw-r-- 1 sammy sammy   1405 mei 14 16:16 phpunit.xml
    -rw-rw-r-- 1 sammy sammy    814 mei 14 16:16 readme.md
    -rw-rw-r-- 1 sammy sammy    563 mei 14 16:16 server.php
    -rw-rw-r-- 1 sammy sammy    538 mei 14 16:16 webpack.mix.js
    
    다음은 우리가 사용 중인 Docker Compose 설정과 관련된 디렉토리 및 파일입니다.
  • docker-compose/ - Nginx 구성 파일 및 응용 프로그램의 MySQL 덤프와 같은 컨테이너 환경을 설정하는 파일을 포함합니다.
  • docker-compose.yml - 여기에서 우리는 우리가 필요로 하는 모든 서비스를 정의했다: app, webdb.공유 볼륨과 네트워크도 여기에 설정되어 있습니다.
  • Dockerfile - 이것은 php-fpm 기반의 사용자 정의 응용 프로그램 이미지를 정의합니다.webdb 서비스는 기본 이미지를 기반으로 하지만 app 서비스는 서비스 용기에 사용자 정의 이미지를 만드는 데 별도의 설정 절차가 필요합니다.
  • 나머지 모든 파일은 응용 프로그램의 일부입니다.

    단계 2 - 응용 프로그램을 설정합니다.env 파일


    이제 포함된 .env 파일을 기반으로 새 .env.example 파일을 만듭니다.Laravel은 Docker Compose도 지원하는 점 env 파일을 사용하기 때문에 환경을 만들 때 설정된 값을 사용할 수 있으며 데이터베이스 서비스 용기를 설정하는 데 사용됩니다.
    1. cp .env.example .env
    참고로 이것은 포함된 .env 파일의 외관입니다.이러한 설정은 독립된 개발 환경에 적용되기 때문에 이 파일의 데이터베이스 자격 증명을 변경할 필요가 없지만 원한다면 자유롭게 변경할 수 있습니다.
    .환경
    APP_NAME=Travellist
    APP_ENV=dev
    APP_KEY=
    APP_DEBUG=true
    APP_URL=http://localhost:8000
    
    LOG_CHANNEL=stack
    
    DB_CONNECTION=mysql
    DB_HOST=db
    DB_PORT=3306
    DB_DATABASE=travellist
    DB_USERNAME=travellist_user
    DB_PASSWORD=password
    
    BROADCAST_DRIVER=log
    CACHE_DRIVER=file
    QUEUE_CONNECTION=sync
    SESSION_DRIVER=cookie
    SESSION_LIFETIME=120
    
    REDIS_HOST=127.0.0.1
    REDIS_PASSWORD=null
    REDIS_PORT=6379
    
    MAIL_DRIVER=smtp
    MAIL_HOST=smtp.mailtrap.io
    MAIL_PORT=2525
    MAIL_USERNAME=null
    MAIL_PASSWORD=null
    MAIL_ENCRYPTION=null
    
    AWS_ACCESS_KEY_ID=
    AWS_SECRET_ACCESS_KEY=
    AWS_DEFAULT_REGION=us-east-1
    AWS_BUCKET=
    
    PUSHER_APP_ID=
    PUSHER_APP_KEY=
    PUSHER_APP_SECRET=
    PUSHER_APP_CLUSTER=mt1
    
    MIX_PUSHER_APP_KEY="${PUSHER_APP_KEY}"
    MIX_PUSHER_APP_CLUSTER="${PUSHER_APP_CLUSTER}"
    
    .env 파일에 만족하면 다음 절에서 설명한 대로 Docker Compose를 계속 실행해야 합니다.

    3단계 - Docker Compose 실행

    .env 파일이 준비되면 다음 컨텐트를 사용하여 환경을 만들 수 있습니다.
    1. docker-compose up -d
    이것은 Docker Compose를 분리 모드로 실행합니다. 이것은 백그라운드에서 실행된다는 것을 의미합니다.이 명령을 처음 실행할 때 서비스 이미지를 다운로드하고 구축하기 때문에 실행에 시간이 걸릴 수 있습니다.
    Output
    Creating network "travellist-laravel-demo-tutorial-403_travellist" with driver "bridge" Creating travellist-db ... done Creating travellist-app ... done Creating travellist-nginx ... done
    서비스 상태를 확인하려면 다음을 실행합니다.
    1. docker-compose ps
    다음 출력을 받게 됩니다.
    Output
    Name Command State Ports -------------------------------------------------------------------------------- travellist-app docker-php-entrypoint php-fpm Up 9000/tcp travellist-db docker-entrypoint.sh mysqld Up 3306/tcp, 33060/tcp travellist-nginx /docker-entrypoint.sh ngin ... Up 0.0.0.0:8000->80/tcp
    컨테이너화된 PHP 개발 환경이 시작되고 실행되었지만 브라우저에서 응용 프로그램에 접근할 수 있도록 몇 가지 절차가 필요합니다.우리는 다음 단계이자 마지막 단계에서 모든 내용을 설정할 것이다.

    단계 4 - 어플리케이션 설정 완료


    현재 PHP 스크립트를 처리할 수 있는 개발 환경이 생겼습니다. app 응용 프로그램 의존 항목을 설치할 수 있습니다.용기 안에서 명령을 실행하려면 composer 명령을 사용하고 서비스 용기의 이름과 실행할 명령을 따를 수 있습니다.
    다음 명령은 PHP가 설치된 docker-compose exec 서비스 컨테이너에서 실행됩니다 composer install.
    1. docker-compose exec app composer install
    종속 항목을 설치한 후 Laravel 명령줄 도구를 사용하여 고유한 응용 프로그램 키를 생성해야 합니다.
    1. docker-compose exec app php artisan key:generate
    Output
    Application key set successfully.
    로컬 컴퓨터에서 이 설정을 실행하면 현재 브라우저를 가리키기app로 프레젠테이션 응용 프로그램에 접근할 수 있으며, 개발 서버에서 이 설정을 실행하면 브라우저를 원격 서버의 도메인 이름이나 IP 주소로 가리켜 이 응용 프로그램에 접근할 수 있습니다.서버에는 포트 artisan 에 접속해야 하므로 주소 localhost 에 접속해야 합니다.
    http://localhost:8000
    
    다음 페이지가 표시됩니다.

    브라우저에 이 페이지를 표시한 후 응용 프로그램을 설정했습니다.

    Docker Compose 빠른 참조


    이 섹션에서는 컨테이너화된 환경을 관리하는 데 사용되는 주 Docker Compose 명령에 대한 간략한 참조를 볼 수 있습니다.이것들은 설정 8000 파일의 같은 디렉터리에서 실행되어야 한다.

    :8000


    환경을 시작하지 않고 현재docker-compose.yml 파일과 연관된 사용자 정의 이미지를 생성합니다.
    1. docker-compose build

    건축하다


    환경을 개선하다.캐시되지 않고 참조된 Dockerfile을 변경하면 사용자 정의 이미지가 자동으로 생성됩니다.
    1. docker-compose up

    docker 작성.yml 회사

    up와 유사하게 현재 ps 파일과 연결된 활성 서비스의 상태를 표시합니다.
    1. docker-compose ps

    docker ps


    지정된 서비스에서 명령을 실행합니다.
    1. docker-compose exec service-name command

    docker 작성.yml 회사


    컨테이너, 볼륨, 네트워크 등 할당된 모든 리소스를 유지하면서 활성 환경을 중지합니다.
    1. docker-compose stop

    집행 이사


    이전에 사용stop 명령이 중지된 환경을 내보냅니다.
    1. docker-compose start

    시작하다


    활성 서비스에서 최신 로그를 표시합니다.
    1. docker-compose logs

    멈추다


    지정한 서비스에서 실행되는 프로세스를 표시합니다.
    docker-compose top service-name
    

    로그


    컨테이너화 환경을 어떠한 분배된 자원과 함께 낮추다.
    docker-compose down
    
    사용 가능한 각 Docker Compose 명령에 대한 자세한 내용은 해당 명령Travellist Laravel Demo을 참조하십시오.

    결론


    이 안내서는 Docker Compose Workshop Kitofficial documentation의 How To Create PHP Development Environment(PHP 개발 환경을 만드는 방법)를 보완하고 이 세미나 프레젠테이션 구성 요소의 후속에 필요한 모든 파일을 포함하는 프레젠테이션slides and speaker notes을 첨부합니다.
    Docker Compose를 사용하는 컨테이너화된 PHP 환경에 대한 자세한 설명서는 설명서GitHub repository를 참조하십시오.