Docker部署php

部署php 5.4

拉取镜像并生成php5.6容器

1
2
3
4
5
6
7
8
9
docker pull maisi/php:5.6-fpm

docker run –name php5.6 \
-e TZ=Asia/Shanghai \
-v /data/wwwroot:/data/wwwroot \
-v /tmp:/tmp \
-p 9000:9000 \
–privileged=true –restart=always \
-d maisi/php:5.6-fpm

安装php mysqli扩展

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
docker exec -it php5.6 /bin/sh

ln -snf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime \
&& echo “Asia/Shanghai” > /etc/timezone

cat > /etc/apt/sources.list << EOF
deb [trusted=yes] http://mirrors.aliyun.com/debian-archive/debian/ stretch main contrib non-free
deb [trusted=yes] http://mirrors.aliyun.com/debian-archive/debian-security/ stretch/updates main contrib non-free
EOF

apt-get update \
&& apt-get -y –no-install-recommends install \
zlib1g-dev libfreetype6-dev libjpeg62-turbo-dev libpng-dev \
&& docker-php-ext-configure gd \
–with-freetype-dir=/usr –with-jpeg-dir=/usr –with-png-dir=/usr \
&& docker-php-ext-install -j$(nproc) bcmath gd pcntl opcache \
mysqli pdo pdo_mysql

注:php 5.6-fpm基于debian stretch(debian 9),目前已经EOL,/etc/apt/sources.list需要使用Debian过期源地址。

部署php 7.4

拉取镜像并生成php7.4容器

1
2
3
4
5
6
7
8
9
10
11
docker pull maisi/php:7.4-fpm

docker run –name php7.4 \
-e TZ=Asia/Shanghai \
-v /data/wwwroot:/data/wwwroot \
-v /tmp:/tmp \
-v /var/run/docker.sock:/var/run/docker.sock \
-v /usr/bin/docker:/usr/bin/docker \
-p 9001:9000 \
–privileged=true –restart=always \
-d maisi/php:7.4-fpm
  • /usr/bin/docker:/usr/bin/docker非必须,但如果php需要调用docker程序,则必须设置docker映射。
  • yum install docker方式安装的docker最高版本为:1.13.1,使用-v /usr/bin/docker:/usr/bin/docker,在容器中执行docker命令会报错:Can't open /etc/sysconfig/docker,必须完全卸载后再安装高版本的docker-ce

安装php mysqli扩展

1
2
3
4
5
6
7
8
9
10
11
12
13
docker exec -it php7.4 /bin/sh
ln -snf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime \
&& echo “Asia/Shanghai” > /etc/timezone

sed -i ‘s/deb.debian.org/mirrors.aliyun.com/;s/security.debian.org/mirrors.aliyun.com/g’ /etc/apt/sources.list

apt-get update \
&& apt-get -y –no-install-recommends install \
cron rsyslog supervisor \
zlib1g-dev libpng-dev libzip-dev \
&& docker-php-ext-configure gd \
&& docker-php-ext-install -j$(nproc) bcmath gd pcntl opcache zip \
mysqli pdo pdo_mysql

修改用户ID

1
2
docker exec -it php7.4 /bin/sh
usermod -u 1000 www-data && groupmod -g 1000 www-data