Dockerfile搭建PHP8镜像&&docker-compose搭建LNMP环境

使用Dockerfile搭建PHP8镜像 编写Dockerfile

vim Dockerfile
FROM php:8.1.0RC5-zts-buster MAINTAINER itxiaoma #buster是基于Debian Linux发行的一个版本,像PHP、Python之类的语言都会使用这个版本的Debian搭建Docker基础镜像。 #docker中php扩展安装方式 #1、PHP源码文件目录自带扩展 docker-php-ext-install直接安装 #2、pecl扩展 因为一些扩展不包含在PHP源码文件中,PHP 的扩展库仓库中存在。用 pecl install 安装扩展,再用 docker-php-ext-enable 命令 启用扩展 #3、其他扩展 一些既不在 PHP 源码包,也不再 PECL 扩展仓库中的扩展,可以通过下载扩展程序源码,编译安装的方式安装 #redis扩展 仓库地址 https://pecl.php.net/package/redis ENV PHPREDIS_VERSION 5.3.4 #memcached扩展 仓库地址 https://pecl.php.net/package/memcached ENV MEMCACHED_VERSION 3.1.5 #mongodb扩展 https://pecl.php.net/package/mongodb ENV MONGODB_VERSION 1.11.1 # 设置时间 RUN /bin/cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime \ && echo 'Asia/Shanghai' > /etc/timezone # 扩展依赖 RUN apt-get update \ && apt-get install -y \ vim \ curl \ wget \ git \ zip \ libz-dev \ libssl-dev \ libnghttp2-dev \ libpcre3-dev \ libmemcached-dev \ zlib1g-dev \ && apt-get clean \ && apt-get autoremove # Composer安装 RUN curl -sS https://getcomposer.org/installer | php \ && mv composer.phar /usr/local/bin/composer \ && composer self-update --clean-backups # Mysqli 扩展 自带 直接安装即可(当前数据库使用的mysqli查询的) RUN docker-php-ext-install mysqli # PDO 扩展 自带 直接安装即可 RUN docker-php-ext-install pdo_mysql # Bcmath 扩展 自带 直接安装即可 RUN docker-php-ext-install bcmath # Redis 扩展下载 pecl本地安装 开启扩展 RUN wget http://pecl.php.net/get/redis-${PHPREDIS_VERSION}.tgz -O /tmp/redis.tgz \ && pecl install /tmp/redis.tgz \ && rm -rf /tmp/redis.tgz \ && docker-php-ext-enable redis # memcached 扩展下载 pecl本地安装 开启扩展 前面已经通过 apt-get安装了libmemcached-dev依赖 RUN wget http://pecl.php.net/get/memcached-${MEMCACHED_VERSION}.tgz -O /tmp/memcached.tgz \ && pecl install /tmp/memcached.tgz \ && rm -rf /tmp/memcached.tgz \ && docker-php-ext-enable memcached# mongodb 扩展下载 pecl本地安装 开启扩展 前面已经通过 RUN wget http://pecl.php.net/get/mongodb-${MONGODB_VERSION}.tgz -O /tmp/mongodb.tgz \ && pecl install /tmp/mongodb.tgz \ && rm -rf /tmp/mongodb.tgz \ && docker-php-ext-enable mongodb

提交镜像
docker build -f Dockerfile -t itxiaoma/php8:1.0 .docker login -u itxiaomadocker push itxiaoma/php8:1.0

使用docker-compose搭建LNMP环境 编写docker-compose文件
vim docker-compose.yml
version: '3.5'services:nginx: image: nginx:alpine restart: always volumes: - ./config/nginx:/etc/nginx/conf.d - ./logs/nginx:/var/log/nginx - ./workspace:/workspace ports: - 80:80 - 443:443php: image: itxiaoma/php8:1.0 restart: always volumes: - ./workspace:/workspace stdin_open: true tty: truedbm: image: mysql:8.0.26 command: --default-authentication-plugin=mysql_native_password restart: always environment: MYSQL_ROOT_PASSWORD: xxx volumes: - './storage/mysql:/var/lib/mysql' ports: - 3306:3306dbr: image: redis:alpine restart: always volumes: - './storage/redis:/data' ports: - 6379:6379 command: redis-server --requirepass xxx --appendonly yes

编辑Nginx配置
vim cinfig/nginx/test.conf
server { listen 80; server_name test.local; index index.php; charset utf-8; location / { try_files $uri $uri/ /index.php?$query_string; } location ~ \.php$ { fastcgi_pass php:9000; fastcgi_param SCRIPT_FILENAME /workspace/xxx/public/$fastcgi_script_name; include fastcgi_params; }location ~ /\.(?!well-known).* { deny all; } }

执行
docker-compose up

【Dockerfile搭建PHP8镜像&&docker-compose搭建LNMP环境】参考资料:通过docker自定义安装php7.x并且安装源码扩展、pecl扩展、及其他扩展

    推荐阅读