이 글은 나중에 잊어버릴 경우를 대비해 직접 메모를 하는 것이 목적이다.
왜 도커, 도커의 기본 명령 중 일부를 더 이상 이 글에서 다루지 않는가.
docker는 웹 프로젝트를 구현하기 위해 몇 가지 서비스를 사용해야 합니다: php, nginx, redis 등. 이 기사에서는 PHP, nginx 및 redis의 사용에 대해 설명합니다. 더 많은 서비스 흐름과 함께 이 세 가지 서비스를 시작합니다.서비스는 같다. php는 5.6 버전을 사용한다.물론 최신판을 사용할 수도 있고 흐름은 똑같아요.
먼저 사용한 미러를 로컬로 끌어당깁니다.
docker pull php:5.6-fpm
docker pull nginx
docker pull redis
시작하기 전에 docker 네트워크를 만들고 docker를 사용하여 여러 개의 컨테이너를 연결합니다
docker network create -d bridge php-net
왜냐하면 우리는 모두 현지에서 코드를 수정해서 각각의 도커에 매핑하면 되기 때문이다.먼저 redis를 기동한다. redis는 매핑할 필요가 없기 때문에 가장 간단하게 기동한다
docker run --name redis-web -d --network php-net -p 6380:6379 redis
php와 nginx 컨테이너를 시작합니다. 로컬로 개발되었기 때문에 호스트 web 디렉토리를 컨테이너에 마운트해야 합니다. 로컬 web 디렉토리가 /wwwwwwkroot/ac이라고 가정하고 컨테이너 서비스에서 이 웹 프로젝트를 실행합니다
docker run --name php-web -d --network php-net -p 9001:9000 -v /www/wwwroot/ac:/data php:5.6-fpm
docker run --name nginx-web -d --network php-net -p 80:80 -v /www/wwwroot/ac:/data nginx
이렇게 3개의 컨테이너가 작동해 이들은 통합 도커 네트워크 내에서 ip를 통해 서로 접속할 수 있게 됐다.
이어 nginx를 중점적으로 배치하고 php 확장을 장착했다.공식 php는 순수하기 때문에순수한 php 환경은 우리가 하나하나 확장하여 설치해야 한다.
먼저 nginx 컨테이너로 들어가서 nginx 프로필 설정 찾기
docker exec -it nginx-web bash
cd /etc/nginx/conf.d
vim default.conf
default.conf 프로필에 다음을 입력하십시오
server{
listen 80;
server localhost;
location / {
root /data; #nginx 컨테이너에 마운트된 호스트/data 코드 디렉터리
index index.php index.html index.htm;
}
location ~\.php(.*)$ {
root /data; # 호스트가 php 컨테이너에 걸린 /data 코드 목록
fastcgi_pass 172.19.0.3:9000; #이 주소는 php 컨테이너의 인트라넷 IP입니다
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /data$fastcgi_script_name;
fastcgi_param PATH_INFO $1; #이 줄 설정pathinfo,tp프레임은 반드시 사용해야 한다pathinfo
include fastcgi_params;
}
}
프로필 편집 후 다시 설정하기
service nginx reload
그런 다음 php-web 용기에 들어가 설치용 확장을 시작합니다. 여기서 우리는 몇 가지 더 자주 사용하는 확장을 설치하는데, 프로세스는 기본적으로 동일합니다
docker exec -it php-web bash
cd /usr/local/bin
./docker-php-ext-install pdo_mysql
./docker-php-ext-install mysql
docker-php-ext-install bcmath
docker-php-ext-install mbstring
apt-get update && apt-get install -y libfreetype6-dev libjpeg62-turbo-dev libpng-dev
docker-php-ext-install -j$(nproc) iconv
docker-php-ext-configure gd --with-freetype-dir=/usr/include/ --with-jpeg-dir=/usr/include/
docker-php-ext-install -j$(nproc) gd
pecl install redis-4.0.1 && pecl install xdebug-2.6.0 && docker-php-ext-enable redis xdebug
mysql, bcmath, gd, mbstring, redis 등의 확장을 단숨에 설치하였다.
php 컨테이너 서비스 재개
docker restart php-web
이러한 완전한 웹 프로젝트는 docker를 사용하여 완료되었습니다. mysql 컨테이너가 설치되어 있지 않습니다. 설치 방법이 동일하기 때문에 연결할 때 인트라넷 ip를 사용하여 연결하도록 주의합니다. 만약 ifconfg 명령을 사용하여 docker0의 첫 번째 행을 찾으려면 docker0의 ip를 찾으십시오. 이 ip를 통해 호스트에게 요청할 수 있습니다. 예를 들어, 우리는 mysql을 호스트 컴퓨터에 설치하면 ip:port를 사용하여 액세스할 수 있습니다. 컨테이너 간에도 인트라넷 ip를 사용하여 서로 액세스하고, 각 컨테이너에 액세스한 다음 cat/etc/hosts를 통해 ip를 얻을 수 있습니다.
'개발 꿀팁 > PHP' 카테고리의 다른 글
PhpWord의 간단한 용법 (0) | 2022.07.11 |
---|---|
PHP를 사용하여 몇 가지 99 곱셈표를 쓰는 방식 (0) | 2022.07.11 |
PHP 디버깅 - 방식 (0) | 2022.07.09 |
php 카스로 SSO 싱글 로그인 및 로그아웃 기능 구현 (0) | 2022.07.09 |
자바는 왜 PHP보다 빠릅니까? (0) | 2022.07.09 |