Skip to content

ngleader/dockerfiles

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

42 Commits
 
 
 
 
 
 
 
 

Repository files navigation

Docker Pulls

PHP 개발을 위한 Docker

PHP 공식 Docker가 제공되지만, 별도 php extension가 필요하면, dockerFile를 만들고 build를 해야하는 번거로움이 있습니다. webtatic 과 remi repo에서 제공하는 패키지를 거의 모두 설치한 Docker Image를 만들게 되었습니다.

Apache + PHP 구동 방법. 간단 버전

$ docker run -d -p 80 -v $(pwd):/var/www/html ngleader/docker-base:centos7-remi-php71

-p 80 으로 구동한 경우, container의 80 port를 host의 random port와 연결되고 docker ps로 나온 0.0.0.0:xxxxx->80를 브라우져에서 http://127.0.0.1:xxxxx로 접속이 가능합니다. 또는 host port를 8080으로 지정하여 -p 8080:80 구동이 가능합니다.

docker images

  • ngleader/docker-base:centos7-remi-php71
  • ngleader/docker-base:centos6-remi-php71
  • ngleader/docker-base:centos7-webtatic-php71
  • ngleader/docker-base:centos7-webtatic-php70
  • ngleader/docker-base:centos6-webtatic-php70
  • ngleader/docker-base:centos7-webtatic-php56
  • ngleader/docker-base:centos6-webtatic-php56
  • ngleader/docker-base:centos7-remi-php56
  • ngleader/docker-base:centos6-remi-php56

Config 수정

container 내부의 설정파일을 host로 옮겨, 수정하여 구동이 가능합니다. 즉, php와 httpd config인 php.ini와 php.d/*.ini, httpd.conf 파일 수정하여 container를 구동이 가능합니다.

dummy container에서 config files 복사

$ docker run -d --name dummy ngleader/docker-base:centos7-webtatic-php56
$ docker cp dummy:/etc/php.ini .
$ docker cp dummy:/etc/php.d .
$ docker cp dummy:/etc/httpd/conf/httpd.conf .
$ docker cp dummy:/etc/httpd/conf.d .
$ docker stop dummy 
$ docker rm dummy
  • 단, remi package인 경우 path가 다르니 phpinfo() 또는 Container 안으로 접속하기 로 확인이 필요합니다.

config가 반영된 새로운 container 구동

$ docker run -d -p 8080:80 \
    -v $(pwd)/html:/var/www/html \
    -v $(pwd)/php.ini:/etc/php.ini \
    -v $(pwd)/php.d:/etc/php.d \
    -v $(pwd)/logs:/etc/httpd/logs \
    ngleader/docker-base:centos7-webtatic-php56

Container 안으로 접속하기

$ docker exec -it {container id} /bin/bash

PHP-CLI

host에 php설치 없이, docker를 이용하여 php-cli를 실행하는 방법

php70

아래 내용으로 각 파일 저장 후 $ chmod +x php70 와 같이 실행 권한을 추가하여 사용

#!/bin/bash
docker run -it --rm -v $(pwd):/var/www/html -w /var/www/html --entrypoint=php ngleader/docker-base:centos7-webtatic-php70 $@
$ ./php70 --version

composer

#!/bin/bash
docker run -it --rm -v $(pwd):/var/www/html -w /var/www/html --entrypoint=composer ngleader/docker-base:centos7-webtatic-php70 $@

phpunit

#!/bin/bash
docker run -it --rm -v $(pwd):/var/www/html -w /var/www/html --entrypoint=phpunit ngleader/docker-base:centos7-webtatic-php70 $@

MySQL 등의 Container와 함께 구동하기

docker 버전

$ docker run -d --name mysql -p 3306 \
    -v $(pwd)/data:/var/lib/mysql \
    -e MYSQL_ROOT_PASSWORD=root \
    -e MYSQL_DATABASE=web \
    -e MYSQL_USER=web \
    -e MYSQL_PASSWORD=web\
    mysql:5.7
$ docker run -d -p 8080:80 \
    --link mysql:mysql \
    -v $(pwd)/html:/var/www/html \
    ngleader/docker-base:centos6-webtatic-php56

docker-compose 버전

아래 내용을 docker-compose.yml 로 저장 후 $ docker-compose up -d

version: '2'

services:
  web:
    image: ngleader/docker-base:centos7-webtatic-php70
    ports:
      - "8080:80"
    volumes:
      - ./html:/var/www/html
      - ./logs:/etc/httpd/logs
      - ./php.ini:/etc/php.ini
    restart: always
    depends_on:
      - db
      - memcached
  db:
    image: mysql:5.7
    ports:
      - "3306"
    volumes:
      - ./data:/var/lib/mysql
    restart: always
    environment:
      MYSQL_ROOT_PASSWORD: root
      MYSQL_DATABASE: web
      MYSQL_USER: web
      MYSQL_PASSWORD: web
  memcached:
    image: memcached:1.4
    restart: always

Debugging with Xdebug and PHPStorm

위 Config 변경방법을 통해 /etc/php.d/xdebug.ini 에 두 줄 추가

xdebug.remote_enable=on
xdebug.remote_autostart=off

Container 구동, # HOST IP #ifconfig 툴 등으로 IP를, # HOST NAME #에는 브라우져에서 접속한 도메인 명을 입력

$ docker run -d -p 80 \ 
    -v $(pwd):/var/www/html \
    -v $(pwd)/php.d:/etc/php.d \
    -e XDEBUG_CONFIG="remote_host=# HOST IP #" \
    -e PHP_IDE_CONFIG="serverName=# HOST NAME #" \
    ngleader/docker-base:centos7-webtatic-php70

PHPStorm 에서 Preferences > Languages & Frameworks > PHP > Servers 에서 + 추가시 Host 항목에 위의 # HOST NAME # 입력

PHPStorm 툴바에서 전화기 모양의 Start Listening for PHP Debuging Connections 클릭

About

Docker image for php dev.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published