>  기사  >  운영 및 유지보수  >  Docker를 사용하여 php+nginx+swoole+mysql+redis 환경을 구축하는 방법

Docker를 사용하여 php+nginx+swoole+mysql+redis 환경을 구축하는 방법

WBOY
WBOY앞으로
2023-05-28 11:23:491498검색

1. swoole-redis-pdo_mysql-gd 확장자를 사용하여 docker 이미지를 만듭니다.

vim dockerfile

2. dockerfile에 작성합니다.

from php:7.1-fpm
run 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 \
&& docker-php-ext-configure pdo_mysql \
&& docker-php-ext-install pdo_mysql \
&& pecl install redis-4.3.0 \
&& pecl install swoole \
&& docker-php-ext-enable redis swoole

3. 마지막 '.'은 이미지를 빌드할 현재 디렉터리를 지정하는 것입니다.

docker build -t myphp4 .

명령을 실행하세요. 네트워크 문제 등으로 인해 성공 후 다음과 유사한 코드가 나타납니다

...

빌드 프로세스가 성공적으로 완료되었습니다
installing '/usr/local/include/php/ext/swoole/config.h'

installing '/usr/local/lib/php/extensions/no-debug-non- zts-20160303/swoole.so'
설치 확인: 채널://pecl.php.net/swoole-4.3.1
구성 옵션 "php_ini"가 php.ini 위치로 설정되지 않았습니다
"extension=swoole. so" to php.ini
removing 중간 컨테이너 ad1420f7554f
---> 2f2f332d73ce
성공적으로 구축된 2f2f332d73ce
성공적으로 태그된 myphp4:latest


지금까지 docker의 사용자 정의 myphp4 이미지가 성공적으로 생성되었습니다!

2 docker-compose.yml 파일을 생성합니다

mkdir pnsmr
cd pnsmr
vim docker-compose.yml
다음 코드를 작성하세요
version: '3.0'
services:
nginx:
  image: "nginx:latest"
  ports:
   - "10000:80"
  volumes:
   - /var/www/html:/usr/share/nginx/html
php-fpm:
  image: "myphp4"
  volumes:
  - /var/www/html:/usr/share/nginx/html
mysql:
  image: "mysql:latest"
redis:
  image: "redis:4.0"

명령을 실행하세요

docker-compose up -d

성공했는지 확인할 수 있습니다

경고: 사용 중인 Docker 엔진은 다음과 같습니다.

compose는 swarm 모드를 사용하여 swarm의 여러 노드에 서비스를 배포하지 않습니다. 모든 컨테이너는 현재 노드에 예약됩니다.

swarm 전체에 애플리케이션을 배포하려면 'docker stack 배포'를 사용하세요.

기본 드라이버를 사용하여 " pnsmr_default " 네트워크 만들기

pnsmr_php-fm_1 만들기 ... done

pnsmr_redis_1 만들기 ... Done

pnsmr_MYSQL_1 만들기 ... Done
pnsmr_nginx_1 만들기 ... don 이 시점에서 Nginx MySQL Redis PHP 서비스


3. 각 서비스 구성 파일을 수정합니다

1. 브라우저에 127.0.0.1:9998을 입력합니다. #여기에 서버 IP 주소를 입력해야 합니다. 아래 그림을 볼 수 있습니다


2. 다음으로 컨테이너의 nginx 구성 파일을 수정해야 합니다. 먼저 명령을 사용하여 각 컨테이너의 docker IP 주소를 확인하세요

docker inspect -f '{{.name}} - {{range .networksettings.networks}}{{.ipaddress}}{{end}}' $(docker ps -aq)

이 명령은 docker-compose로 열린 모든 컨테이너의 IP를 볼 수 있습니다. 아래 그림과 비슷합니다. 해당 IP 주소를 내부 통신에 사용할 수 있습니다Docker를 사용하여 php+nginx+swoole+mysql+redis 환경을 구축하는 방법

3. nginx 컨테이너의 구성 파일을 복사하고 nginx가 php

docker cp pnsmr_nginx_1:/etc/nginx/conf.d/default.conf nginx.conf
vim nginx.conf

를 구문 분석할 수 있도록 수정 및 교체합니다. 다음 코드

server {
  listen    80;
  server_name localhost;

  #charset koi8-r;
  #access_log /var/log/nginx/host.access.log main;

  location / {
    root  /usr/share/nginx/html;
    index index.html index.htm;
  }

  #error_page 404       /404.html;

  # redirect server error pages to the static page /50x.html
  #
  error_page  500 502 503 504 /50x.html;
  location = /50x.html {
    root  /usr/share/nginx/html;
  }

  # proxy the php scripts to apache listening on 127.0.0.1:80
  #
  #location ~ \.php$ {
  #  proxy_pass  http://127.0.0.1;
  #}

  # pass the php scripts to fastcgi server listening on 127.0.0.1:9000
  #
  location ~ \.php$ {
    root      html;
    fastcgi_pass  172.24.0.3:9000;#此处需要填写你的php容器的docker内部通讯ip
    fastcgi_index index.php;
    fastcgi_param script_filename /usr/share/nginx/html/$fastcgi_script_name;
    include    fastcgi_params;
  }

  # deny access to .htaccess files, if apache's document root
  # concurs with nginx's one
  #
  #location ~ /\.ht {
  #  deny all;
  #}
}
docker cp nginx.conf pnsmr_nginx_1:/etc/nginx/conf.d/default.conf #将修改好的配置文件拷贝到容器里
docker container stop pnsmr_nginx_1 
docker container start pnsmr_nginx_1 #重启nginx容器使配置文件生效
vim /var/www/html/index.php #在服务器本地目录新建 index.php 文件,输入<?php phpinfo(); 并保存
vim /var/www/html/index.html #在服务器本地目录新建 index.html 文件,输出helloworld
Docker를 사용하여 php+nginx+swoole+mysql+redis 환경을 구축하는 방법127.0.0.1:9998을 방문하면 html 파일이 정상적으로 파싱됩니다

127.0.0.1:9998/index.php를 방문하면 PHP 파일이 정상적으로 파싱됩니다

Docker를 사용하여 php+nginx+swoole+mysql+redis 환경을 구축하는 방법

4. mysql, redis가 효과적입니다

vim /var/www/html/redis.php #用于测试redis是否配置成功
<?php
$redis = new redis();
$redis->connect("172.24.0.4",6379);
$redis->set(&#39;test&#39;,&#39;this is a test for redis&#39;);
echo $redis->get(&#39;test&#39;);

Visit 127.0.0.1:9998/redis.php, redis가 적용되었습니다Docker를 사용하여 php+nginx+swoole+mysql+redis 환경을 구축하는 방법

mysql 컨테이너를 입력하세요

docker exec -it pnsmr_mysql_1 bash

mysql을 입력하고 루트 사용자 비밀번호를 변경하세요

Docker를 사용하여 php+nginx+swoole+mysql+redis 환경을 구축하는 방법

Create a 테스트 파일

vim /var/www/html/mysql.php
<?php
$pdo = new pdo(&#39;mysql:host=172.24.0.2;dbname=mysql;port=3306&#39;,&#39;root&#39;,&#39;root123&#39;);
var_dump($pdo);

127.0.0.1:9998/mysql.php를 방문하시면 mysql이 적용되었습니다

Docker를 사용하여 php+nginx+swoole+mysql+redis 환경을 구축하는 방법

위 내용은 Docker를 사용하여 php+nginx+swoole+mysql+redis 환경을 구축하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 yisu.com에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제