CentOS 安装 Docker
略
docker 搭建 PHP 开发环境
拉取相应镜像
docker pull nginx:1.25.0
docker pull mysql:8.0.33
docker pull redis:7
docker pull php:7.4-fpm
创建网络
docker network create -d bridge my-net
# 查看网络
docker network inspect my-net
准备映射目录
cd
mkdir -p docker/mysql docker/redis docker/nginx/conf.d docker/nginx/logs
Nginx
准备配置文件
# 主配置文件
vim ~/docker/nginx/nginx.conf
# 写入如下内容
user nginx;
worker_processes auto;
error_log /var/log/nginx/error.log notice;
pid /var/run/nginx.pid;
events {
worker_connections 1024;
}
http {
include /etc/nginx/mime.types;
default_type application/octet-stream;
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
access_log /var/log/nginx/access.log main;
sendfile on;
#tcp_nopush on;
keepalive_timeout 65;
#gzip on;
include /etc/nginx/conf.d/*.conf;
}
# 虚拟站点文件
启动 nginx
容器
docker run -dp 80:80 -p 443:443 --name nginx --network my-net --mount type=bind,source=/root/docker/nginx/logs,target=/var/log/nginx --mount type=bind,source=/root/docker/nginx/nginx.conf,target=/etc/nginx/nginx.conf --mount type=bind,source=/root/docker/nginx/conf.d,target=/etc/nginx/conf.d --mount type=bind,source=/root/docker/nginx/cert,target=/etc/nginx/cert --mount type=bind,source=/www,target=/www nginx:1.25.0
redis
准备配置文件
vim /root/docker/redis/redis.conf
# 写入如下内容,这里只配置了端口和密码,全的配置请自行添加
port 6379
requirepass 123456
启动 redis
容器
docker run --name redis7 -dp 6379:6379 --network my-net --mount type=bind,source=/root/docker/redis,target=/data --mount type=bind,source=/root/docker/redis/redis.conf,target=/data/redis.conf redis:7 redis-server /data/redis.conf
测试连接:OK
MySQL
# 设置密码 123456,记得换掉
docker run --name mysql -it -dp 3306:3306 --network my-net -e MYSQL_ROOT_PASSWORD=123456 --mount type=bind,source=/root/docker/mysql,target=/var/lib/mysql mysql:8.0.33
PHP
docker run -d --name php74 --network my-net --mount type=bind,source=/www,target=/www php:7.4-fpm
dockerfile
php
编写 dockerfile 文件,下面是注释版
采用 git 拉取代码方式
# 以官方的 php:7.4-fpm 为基础镜像
FROM php:7.4-fpm
# 执行命令
RUN set -eux \
# 更新源
&& apt-get update \
# 安装 git,如不需要可以不用安装
# 注意:安装这个很耗时,一般不需要安装,可以采用复制,将整个代码复制到镜像中去
&& apt-get install -y git \
# 安装 php zip 扩展所需要的依赖
&& apt-get install -y zlib1g-dev \
&& apt-get install -y libzip-dev \
# 安装 php gd 扩展所需要的依赖
&& apt-get install -y libpng-dev \
# 安装 PHP 扩展,pdo_mysql、zip、bcmath、gd、redis
&& docker-php-ext-install pdo_mysql \
&& docker-php-ext-install zip \
&& docker-php-ext-install bcmath \
&& docker-php-ext-install gd \
# Redis 扩展需要这样安装
&& pecl install -o -f redis \
# 创建 php.ini 文件
&& cp /usr/local/etc/php/php.ini-production /usr/local/etc/php/php.ini \
# 将 Redis 扩展写入 php.ini 文件中
&& echo "extension=redis.so" >> /usr/local/etc/php/php.ini \
&& cd \
# 安装 composer,非必须,可以直接将提前准备好的 composer 复制进镜像
&& php -r "copy('https://install.phpcomposer.com/installer', 'composer-setup.php');" \
&& php composer-setup.php \
# 设置 composer 环境变量
&& mv composer.phar /usr/local/bin/composer \
&& mkdir /www \
&& cd /www \
# 拉取代码,可以采用将宿主机的整个代码copy到镜像中
&& git clone https://用户名:密码@gitee.com/shuxiaoyuan/code_hooks.git \
# 执行 composer
&& composer install \
如果git账号密码有特殊字符,转义如下
采用 COPY 代码方式
FROM php:7.4-fpm
WORKDIR /www
# 将当前目录下的所有文件复制到镜像的 /www/code_hooks 目录中
COPY . /www/code_hooks
RUN set -eux \
&& apt-get update \
&& apt-get install -y zlib1g-dev \
&& apt-get install -y libzip-dev \
&& apt-get install -y libpng-dev \
&& docker-php-ext-install pdo_mysql \
&& docker-php-ext-install zip \
&& docker-php-ext-install bcmath \
&& docker-php-ext-install gd \
&& pecl install -o -f redis \
&& rm -rf /tmp/pear \
&& docker-php-ext-enable redis\
&& cp /usr/local/etc/php/php.ini-production /usr/local/etc/php/php.ini \
&& php -r "copy('https://install.phpcomposer.com/installer', 'composer-setup.php');" \
&& php composer-setup.php \
&& mv composer.phar /usr/local/bin/composer
构建镜像
# -f 指定 dockerfile 文件位置, -t 指定镜像名和版本号,别忘了最后面有一个 .
docker build -f .\php74-fpm-1 -t shuxiaoyuan/php74:v1.3 .