做项目过程中,经常会有php多个版本切换问题,用docker来解决多个php版本问题,本机已经有来nginx,不需要再构建nginx的docker来,如果需要可以使用最下方备注的docker-composer。
一、拉取php-fpm的镜像
-
7.4 版本
docker pull php:7.4.2-fpm
-
7.3版本
docker pull php:7.3.14-fpm
-
5.6版本
docker pull php:5.6-fpm
二、创建容器
- docker 直接创建
docker run --name php-fpm -d \ -p 127.0.0.1:9100:9000 \ -v /data/myweb/:/data/myweb/ \ --restart=on-failure:3 \ --workdir=/data/myweb/ \ php:7.3.14-fpm #image替换为相关版本的php-fpm版本
- docker-compose 创建
version: "3" services: php-fpm: #image替换为相关版本的php-fpm版本 image: "php:7.3.14-fpm" restart: always working_dir: /data/myweb/ ports: - "127.0.0.1:9001:9000" volumes: - /data/myweb/:/data/myweb/ #网站目录需要和nginx配置目录一致 #- /data/docker/lnmp/php5.6/php.ini-production:/usr/local/ etc/php/php.ini #正式线 #- /data/docker/conf/conf/php5.6/php-fpm.conf:/usr/local/etc/ php-fpm.conf # - /etc/localtime:/etc/localtime:ro ##项目启动命令## # docker-compose -f docker-fpm-compose.yml -p php up -d ##项目停止命令## # docker-compose -f docker-fpm-compose.yml -p php down
三、安装redis扩展(安装其他扩展方法类似)
-
进入php容器
docker exec -it php-fpm bash
-
安装redis扩展
- 方法一:
pecl install -o -f redis rm -rf /tmp/pear/ docker-php-ext-enable redis
- 方法二:
curl -L -o /tmp/redis.tar.gz https://github.com/phpredis/phpredis/archive/3.1.3.tar.gz tar xfz /tmp/redis.tar.gz rm -r /tmp/redis.tar.gz mkdir -p /usr/src/php/ext mv phpredis-3.1.3 /usr/src/php/ext/redis cd /usr/src/php/ext/redis docker-php-ext-install redis
- 方法三: (支持官方扩展安装)
docker-php-ext-install pdo pdo_mysql
- 方法一:
注: docker-lnmp-composer
version: "3"
services:
nginx:
image: "nginx"
restart: always
ports:
- "80:80"
- "443:443"
volumes:
- /data/docker/lnmp/conf/nginx:/etc/nginx
- /data/www:/usr/share/nginx/html
- /data/docker/lnmp/log/nginx/:/var/log/nginx/
- /etc/localtime:/etc/localtime:ro
depends_on:
- php-fpm
networks:
lnmp:
ipv4_address: 172.16.1.2
php-fpm:
#image替换为相关版本的php-fpm版本
image: "php:7.3.14-fpm"
restart: always
volumes:
- /data/www:/usr/share/nginx/html
- /data/docker/lnmp/php5.6/php.ini-production:/usr/local/etc/php/php.ini
#- /data/docker/conf/conf/php5.6/php-fpm.conf:/usr/local/etc/php-fpm.conf
- /etc/localtime:/etc/localtime:ro
networks:
lnmp:
ipv4_address: 172.16.1.3
redis:
image: "redis"
ports:
- "6379:6379"
restart: always
networks:
lnmp:
ipv4_address: 172.16.1.4
networks:
lnmp:
driver: bridge
ipam:
driver: default
config:
-
subnet: 172.16.1.0/24
##项目启动命令##
# docker-compose -f docker-lnmp-compose.yml -p lnmp up -d
##项目停止命令##
# docker-compose -f docker-lnmp-compose.yml -p lnmp down