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扩展、及其他扩展
推荐阅读
- 六步搭建ES6语法环境
- (1)redis集群原理及搭建与使用(1)
- 桁架搭建有什么价值()
- VM|VM ware 的 harbor 私有仓库搭建 (Ubuntu16.04)
- PHP开发-Mac搭建ThinkPHP5.0
- Python|Win10下 Python开发环境搭建(PyCharm + Anaconda) && 环境变量配置 && 常用工具安装配置
- sentry搭建错误监控系统(二)
- 【乐高创意作品】超智能!这款乐高搭建的除草机!
- 8、Flask构建弹幕微电影网站-搭建后台页面-密码修改、主页控制面板
- 适用于小白(VSCode搭建Vue项目,最详细的搭建步骤哦)