如何在php:5.6-fpm-alpine docker容器中启用Memcache



这是php -m的错误输出

警告:PHP启动:无法加载动态库"/usr/地方/lib/php/扩展/不-调试-非zt型- 20131226/memcache.so '

  • 加载共享库/usr/local/lib/php/extensions/no-debug-non-zts-20131226/memcache.so错误:在第0行
  • 中,Unknown中没有这样的文件或目录

Dockerfile

ARG PHP_VERSION=5.6
FROM php:${PHP_VERSION}-fpm-alpine
RUN apk --update add openssh-client make grep autoconf gcc libc-dev zlib-dev
RUN cd /tmp 
&& curl -o php-memcache.tgz http://pecl.php.net/get/memcache-3.0.8.tgz 
&& tar -xzvf php-memcache.tgz 
&& cd memcache-3.0.8 
&& curl -o memcache-faulty-inline.patch http://git.alpinelinux.org/cgit/aports/plain/main/php5-memcache/memcache-faulty-inline.patch?h=3.4-stable 
&& patch -p1 -i memcache-faulty-inline.patch 
&& phpize 
&& ./configure --prefix=/usr 
&& make INSTALL_ROOT=/ install 
&& install -d ./etc/php/conf.d 
&& echo "extension=memcache.so" > /usr/local/etc/php/conf.d/docker-php-ext-memcache.ini

docker-compose up -d在执行时没有错误,扩展已经启用,但仍然从系统中丢失。

注意:这是一个在PHP 5.6上工作的遗留系统,需要进行dockerized,以便重构项目以在PHP 7.x上工作

项目依赖于Memcache而不是Memcached

问题是dockerMemcached我试图使用memcache连接到Memcached服务器。

我找不到Memcachedocker容器soMemcached使用。

version: '3.6'
services:
https://hub.docker.com/_/php/
php-platform:
environment:
- PHP_IDE_CONFIG=serverName=localhost
container_name: php-5.6
build:
context: .
dockerfile: docker/php/5.6/Dockerfile
cache_from:
- ./docker/php/5.6/
depends_on:
- db
links:
- memcached-client
- gearman
- rabbitmq
- mailcatcher
volumes:
- .:/var/www/dev-docker:rw,cached
- /usr/local/lib
extra_hosts:
- dev-docker.geschenkparadies.ch:host-gateway
networks:
- default
# https://hub.docker.com/_/node/
nodejs:
container_name: nodejs
build:
context: ./ReactAdmin
dockerfile: ../docker/nodejs/Dockerfile
cache_from:
- ../docker/nodejs
volumes:
- ./ReactAdmin:/var/www/dev-docker/ReactAdmin:rw,cached
networks:
- default
# https://hub.docker.com/_/nginx/
web-server:
container_name: nginx
build:
context: .
dockerfile: docker/nginx/Dockerfile
cache_from:
- ./docker/nginx
depends_on:
- php-platform
volumes:
- .:/var/www/dev-docker:ro
ports:
- "80:80"
- "443:443"
expose:
- "8000"
networks:
- default
# https://hub.docker.com/_/mysql
db:
container_name: database
image: mysql:8
command: --default-authentication-plugin=mysql_native_password --character-set-server=utf8 --collation-server=utf8_unicode_ci --max-allowed-packet=67108864
restart: always
environment:
- MYSQL_ROOT_PASSWORD=!ChangeMe!
- MYSQL_DATABASE=gp_core
- MYSQL_USER=gp_sql_local
- MYSQL_PASSWORD=!ChangeMe!
- MYSQL_TCP_PORT=3307
volumes:
- db-data:/var/lib/mysql
ports:
- "3307:3307"
networks:
- default
# https://hub.docker.com/_/memcached
memcached-client:
image: memcached:alpine
container_name: memcached-client
command: -p 11212
ports:
- "11212:11212"
networks:
- default
# http://localhost:15672/#
rabbitmq:
container_name: rabitmq-platform
build:
context: .
dockerfile: docker/rabitmq/Dockerfile
cache_from:
- ./docker/rabitmq
environment:
- RABBITMQ_DEFAULT_USER=admin
- RABBITMQ_DEFAULT_PASS=admin
ports:
- "5672:5672"
- "15672:15672"
networks:
- default
gearman:
image: artefactual/gearmand:latest
container_name: gearman-platform
ports:
- "4730:4730"
networks:
- default
# https://hub.docker.com/r/schickling/mailcatcher/
mailcatcher:
image: schickling/mailcatcher
container_name: mailcatcher
ports:
- "1026:1025" # changed to 1026 to avoid local instance of mailcatcher
- "1081:1080"
networks:
default:
name: "network"
volumes:
db-data: { }
esdata1:
driver: local

最新更新