docker PHP7을 사용합니다.3+Laavel 환경 15분 제작~2019년 버전
이 글에서는 docker 명령만 다음 작업을 수행할 수 있습니다.
https://github.com/tomoyamachi/docker-laravel-fpm-7.3
한편 이 글은 다음과 같은 보도된 지식을 바탕으로 진행됐다.
준비한 PHP7을 본격적으로 활용한다.컨테이너 3.0개 만들기
프로젝트 작성
composier 컨테이너를 통해 현재 디렉토리에 Laavel 항목을 만듭니다.
$ docker run --rm --interactive --tty -v $(pwd):/app \
composer bash -c \
"composer create-project --prefer-dist laravel/laravel ."
현재 디렉토리$ docker-laravel-php-fpm-7.3.0# ls
app composer.json database public routes tests
artisan composer.lock package.json readme.md server.php vendor
bootstrap config phpunit.xml resources storage webpack.mix.js
OK.PHP-FPM 용기 만들기
PHP-FPM 컨테이너의 Docker file/dockerignore 파일을 만듭니다.
PHP에 대한 Dockkerfile 제작은 길어지기 때문에 다른 기사를 정리했습니다.
참조여기..
2019/01/26 추기
참고@hokutoasari씨의 뉴스.를 추가
echo 'opcache.optimization_level=0x7FFFBBFF'
했습니다.# Dockerfile
FROM php:7.3.0-fpm-alpine3.8
RUN apk upgrade --update && apk --no-cache add \
# iconv, intl
icu-dev \
# xdebug
autoconf make g++ gcc
RUN docker-php-ext-install -j$(nproc) iconv intl mbstring pdo_mysql opcache && \
pecl install xdebug-2.7.0beta1 && \
docker-php-ext-enable xdebug
RUN { \
echo 'upload_max_filesize = 100M'; \
echo 'post_max_size = 108M'; \
echo 'short_open_tag = On'; \
echo 'fastcgi.logging = 1'; \
echo 'opcache.enable=1'; \
echo 'opcache.optimization_level=0x7FFFBBFF'; \
echo 'opcache.revalidate_freq=0'; \
echo 'opcache.validate_timestamps=1'; \
echo 'opcache.memory_consumption=128'; \
echo 'opcache.interned_strings_buffer=8'; \
echo 'opcache.max_accelerated_files=4000'; \
echo 'opcache.revalidate_freq=60'; \
echo 'opcache.fast_shutdown=1'; \
echo 'xdebug.remote_enable=1'; \
} > /usr/local/etc/php/conf.d/overrides.ini
COPY . /var/www/html
RUN chown -R www-data:www-data /var/www
그리고docker build
.어쨌든 라벨이라는 이름으로 용기를 시작합니다.$ docker build -t laravel .
$ docker run laravel
[30-Dec-2018 17:24:55] NOTICE: fpm is running, pid 1
[30-Dec-2018 17:24:55] NOTICE: ready to handle connections
나는 막 가려던 참에 왔다.컨테이너 만들기
운행 상황을 확인하다.
컨테이너를 만듭니다.
FROM nginx:1.15.6-alpine
RUN { \
echo 'server {';\
echo 'listen 80;';\
echo 'root /var/www/html/public;'; \
echo 'index index.php index.html;'; \
echo 'error_log /var/log/nginx/error.log;'; \
echo 'access_log /var/log/nginx/access.log;';\
echo 'location ~ \.php$ {';\
echo 'try_files $uri =404;';\
echo 'fastcgi_split_path_info ^(.+\.php)(/.+)$;';\
echo 'fastcgi_pass laravel:9000;';\
echo 'fastcgi_index index.php;';\
echo 'include fastcgi_params;';\
echo 'fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;';\
echo 'fastcgi_param PATH_INFO $fastcgi_path_info;';\
echo '}';\
echo 'location / {';\
echo 'try_files $uri $uri/ /index.php?$query_string;';\
echo 'gzip_static on;';\
echo '}';\
echo '}';\
} > /etc/nginx/conf.d/default.conf
COPY public /var/www/html/public
위의 Doke rfile을 계속 구성합니다.Dockerfile.nginx
등의 명칭으로 docker build -f Dockerfile.prod -t laravel-nginx .
로 구축하세요.하는 일은 php에 접근하면
laravel:9000
에이전트가 될 것 같습니다.다음은laavel이라는 이름으로 php-fpm 용기에 연결하세요.
nginx를 통해 php-fpm에 연결
nginx에서 php-fpm 용기에 연결하고 싶기 때문에 다음과 같은 조건을 만족합니다.
laravel
그럼 시작합시다.
1. 동일한 네트워크에 컨테이너 구성
docker는 일반적인 프로그램과 분리되어 존재하며 각각hosts 정보를 가지고 있습니다.
컨테이너 간 통신을 위해서는 같은 네트워크에 컨테이너를 만들어야 한다.
다른 용기에 영향을 주지 않기 위해 새 네트워크를 만듭니다.
이름은
docker network ls
쓰지 않은 것을 선택해야 한다.이번에는 laavel-test로 제작되었습니다.
$ docker network create laravel-test
2.nginx에서 php-fpm 컨테이너로laavel의host명으로 접근 허용
docker run의 name을 지정합니다.
방금 제작된 라벨이라는 컨테이너는 방금 제작된 라벨-test라는 네트워크에 라벨이라는 이름으로 배치됐다.
$ docker run --network laravel-test --name laravel laravel
그리고 다른 종착역에서 같은 네트워크에 방금 제작한nginx 컨테이너를 설치합니다.이때 컨테이너의 80개 포트를 기계의 80개 포트에 올려놓는다.docker run --network laravel-test -p 80:80 laravel-nginx
브라우저에서 확인
내가 봤어!!
또한 상기 명령이라면 터미널에 로그가 표시될 것입니다.
PHP-FPM 측
172.25.0.3 - 30/Dec/2018:17:51:57 +0000 "GET /index.php" 200
172.25.0.3 - 30/Dec/2018:17:51:59 +0000 "GET /index.php" 200
측면172.25.0.1 - - [30/Dec/2018:17:51:57 +0000] "GET / HTTP/1.1" 200 2333 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3578.98 Safari/537.36"
172.25.0.1 - - [30/Dec/2018:17:51:59 +0000] "GET / HTTP/1.1" 200 2333 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3578.98 Safari/537.36"
이것은 docker run에서 -d
옵션을 주면 백엔드에서 이동합니다.또는 프로세스가 중지되면
docker container start
를 거쳐 컨테이너를 다시 시작해도 백스테이지에서 이동한다.$ docker container ls -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
39a0c410b1cc laravel-nginx "nginx -g 'daemon of…" 10 minutes ago Exited (0) 6 seconds ago boring_rosalind
2b46c41b09db laravel "docker-php-entrypoi…" 22 minutes ago Exited (0) 4 minutes ago laravel
$ docker container start 2b46c41b09db
2b46c41b09db
$ docker container start 39a0c410b1cc
39a0c410b1cc
총결산
절차를 잘 정리하면 시간이 많이 걸리지만 컨테이너로만 프로젝트를 만들면 15분 정도면 완성할 수 있다.
Reference
이 문제에 관하여(docker PHP7을 사용합니다.3+Laavel 환경 15분 제작~2019년 버전), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/tomoyamachi/items/991a0d149e9585cac15f
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
Reference
이 문제에 관하여(docker PHP7을 사용합니다.3+Laavel 환경 15분 제작~2019년 버전), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/tomoyamachi/items/991a0d149e9585cac15f텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)