Docker nginx+php80+mysql80, 并安装gd和mysql扩展

参考: Docker nginx+php72+php74+mysql57, 并安装gd和mysql扩展

PS: nginx部署参考上面的文章


0. 运行docker:

sudo systemctl start docker

1. 复制配置文件到宿主机:

# 创建宿主机目录结构
mkdir -p /www/docker/php/php80
mkdir -p /www/web
mkdir -p /www/docker/mysql/mysql80/data

# 创建容器
docker run -d --name php80 --network mxd php:8.0-fpm
docker run -d --name mysql80 --network mxd -e MYSQL_ROOT_PASSWORD=123456 mysql:8.0

# 复制配置文件
docker cp php80:/usr/local/etc/php-fpm.d/www.conf /www/docker/php/php80
docker cp php80:/usr/local/etc/php/php.ini-development /www/docker/php/php80/php.ini
docker cp mysql80:/etc/mysql/conf.d /www/docker/mysql/mysql80
docker cp mysql80:/etc/mysql/mysql.conf.d /www/docker/mysql/mysql80

# 销毁容器
docker rm -vf php80 mysql80

2. 创建容器, 挂载目录:

# 创建 php 容器
# -v 说明:
# 第1个: 挂载 php-fpm 配置文件
# 第2个: 挂载 php 配置文件
# 第3个: 挂载 html 文件目录
docker run -d --name php80 --network mxd \
 -v /www/docker/php/php80/www.conf:/usr/local/etc/php-fpm.d/www.conf \
 -v /www/docker/php/php80/php.ini:/usr/local/etc/php/php.ini \
 -v /www/web:/www/web \
 php:8.0-fpm

# 创建 mysql 容器
docker run -d --name mysql80 --network mxd \
 -v /etc/localtime:/etc/localtime \
 -v /www/docker/mysql/mysql80/data:/var/lib/mysql \
 -v /www/docker/mysql/mysql80/conf.d:/etc/mysql/conf.d \
 -v /www/docker/mysql/mysql80/mysql.conf.d:/etc/mysql/mysql.conf.d \
 -e MYSQL_ROOT_PASSWORD=123456 \
 mysql:8.0

# 测试mysql连接:
docker exec -it mysql80 mysql -uroot -p123456

3. 安装php扩展pdo_mysql,gd,zip,intl,redis

# 进入容器
$ docker exec -it php80 bash

# 安装`pdo_mysql`扩展:
$ docker-php-ext-install pdo_mysql

# 单独安装`gd`扩展
$ apt-get update && apt-get install -y libfreetype6-dev libjpeg62-turbo-dev libpng-dev \
   && docker-php-ext-configure gd --with-freetype --with-jpeg \
   && docker-php-ext-install -j$(nproc) gd

# 安装`zip`扩展:
$ apt-get update && apt-get install -y --no-install-recommends libzip-dev \
   && rm -r /var/lib/apt/lists/* \
   && docker-php-ext-install -j$(nproc) zip

# 安装`intl`扩展:
$ apt-get update && apt-get install -y zlib1g-dev libicu-dev g++ \
   && docker-php-ext-configure intl \
   && docker-php-ext-install intl

# 安装`redis`扩展(几个选项都输入`no`):
$ pecl install redis && docker-php-ext-enable redis

# 退出容器
$ exit