編寫Dockerfile文件
<code>FROM php:7.4.3-fpm
MAINTAINER zhanghuizong <ifchange.com>
RUN /bin/echo 'deb http://mirrors.aliyun.com/debian/ buster main non-free contrib \\
deb-src http://mirrors.aliyun.com/debian/ buster main non-free contrib \\
deb http://mirrors.aliyun.com/debian-security buster/updates main \\
deb-src http://mirrors.aliyun.com/debian-security buster/updates main \\
deb http://mirrors.aliyun.com/debian/ buster-updates main non-free contrib \\
deb-src http://mirrors.aliyun.com/debian/ buster-updates main non-free contrib \\
deb http://mirrors.aliyun.com/debian/ buster-backports main non-free contrib \\
deb-src http://mirrors.aliyun.com/debian/ buster-backports main non-free contrib' > /etc/apt/sources.list
# 下載必要的組件
RUN apt-get update \\
&& apt-get install -y vim \\
&& apt-get install -y apt-utils \\
&& apt-get install -y wget \\
&& apt-get install -y librabbitmq-dev \\
&& apt-get install -y zlib1g-dev \\
&& apt-get install -y libpng-dev \\
&& apt-get install -y libmcrypt-dev \\
&& apt-get install -y libmemcached-dev \\
&& apt-get install -y libxml2-dev \\
&& apt-get install -y libzip-dev
# 單獨下載PHP擴展包
RUN wget http://pecl.php.net/get/redis-5.1.1.tgz -P /tmp/ \\
&& wget http://pecl.php.net/get/xdebug-2.8.1.tgz -P /tmp/ \\
&& wget http://pecl.php.net/get/amqp-1.9.4.tgz -P /tmp/ \\
&& wget http://pecl.php.net/get/mcrypt-1.0.3.tgz -P /tmp/ \\
&& wget http://pecl.php.net/get/memcached-3.1.5.tgz -P /tmp/ \\
&& wget http://pecl.php.net/get/mongodb-1.7.3.tgz -P /tmp/ \\
&& wget http://pecl.php.net/get/xlswriter-1.3.3.2.tgz -P /tmp/ \\
&& wget http://pecl.php.net/get/swoole-4.4.16.tgz -P /tmp/
# 安裝PHP擴展包
RUN pecl install /tmp/redis-5.1.1.tgz \\
&& pecl install /tmp/xdebug-2.8.1.tgz \\
&& pecl install /tmp/amqp-1.9.4.tgz \\
&& pecl install /tmp/mcrypt-1.0.3.tgz \\
&& pecl install /tmp/memcached-3.1.5.tgz \\
&& pecl install /tmp/mongodb-1.7.3.tgz \\
&& pecl install /tmp/xlswriter-1.3.3.2.tgz \\
&& docker-php-ext-install bcmath \\
&& docker-php-ext-install ctype \\
&& docker-php-ext-install ctype \\
&& docker-php-ext-install pcntl \\
&& docker-php-ext-install pdo_mysql \\
&& docker-php-ext-install soap \\
&& docker-php-ext-install sockets \\
&& docker-php-ext-install calendar \\
&& docker-php-ext-install zip \\
&& docker-php-ext-install opcache \\
&& pecl install /tmp/swoole-4.4.16.tgz \\
&& docker-php-ext-enable redis xdebug amqp mcrypt mongodb swoole xlswriter \\
&& rm -rf /tmp/*/<ifchange.com>/<code>
Dockerfile編寫好,執行命令:sudo docker build -t php-7.4.3-fpm:v1.0.0 .
建議將構建好的鏡像push到hub.docker.com中去,方便以後使用
步驟:
1、docker login - 沒有賬號自行註冊
2、將剛剛構建好的PHP鏡像打一個標籤,執行命令:docker tag php-7.4.3-fpm:v1.0.0 zhanghuizong/php-7.4.3-fpm:v1.0.0
3、推送到遠端:docker push zhanghuizong/php-7.4.3-fpm:v1.0.0
推送完畢如何使用
docker pull zhanghuizong/php-7.4.3-fpm:v1.0.0
Docker服務編排
<code>version: '3'
services:
php:
image: zhanghuizong/php-7.4.3-fpm:v1.0.0
container_name: php
volumes:
- /mnt/d/workspaces:/data/httpd
ports:
- "9000:9000"
nginx:
image: nginx:latest
container_name: nginx
volumes:
- /mnt/d/workspaces:/data/httpd
- /mnt/d/docker/nginx/vhosts:/etc/nginx/conf.d
ports:
- "80:80"/<code>
執行命令:
1、啟動服務器:docker-compose up -d
2、停止服務:docker-compose down
如何運行PHP
<code>
docker run -d --name php zhanghuizong/php-7.4.3-fpm:v1.0.0/<code>
編寫PHP腳本
這個是否需要看個人需求吧
<code>#!/bin/bash
docker run -it --rm --name php-cli -v "$PWD":/data/httpd -w /data/httpd zhanghuizong/php-7.4.3-fpm:v1.0.0 php $1 $2/<code>
將上面shell文件放進:/usr/bin/ 中
首先我的Linux服務器壓根沒有裝PHP相關套件,通過上面shell腳本,寫入當前的Linux服務器中,那麼可在命令控制檯使用php,和原始php沒啥區別
使用該命令運行php文件
閱讀更多 有我在心 的文章