一、docker安装
这里就不说了,docker-ce版本安装可以参考我前面的文章:Centos docker安装(docker-ce版)_Mask玲的博客-CSDN博客
二、安装各个环境
1、安装nginx
docker pull nginx
如要拉取指定版本,访问docker仓库镜像地址:Docker nginx指定版本
启动nginx服务
docker run -p 80:80 -d --name nginx -v /home/wwwroot:/usr/share/nginx/html:cached --privileged=true nginx
#-p 80:80 端口映射
#--name nginx 容器名称
#-v /home/wwwroot:/usr/share/nginx/html:cached 将宿主机/home/wwwroot目录映射到容器内的/usr/share/nginx/html目录,增加容器缓存
#-d 后台运行
#--privileged=true root权限
docker run --net=host -d --name nginx -v /home/wwwroot:/usr/share/nginx/html:cached --privileged=true nginx
#--net=host 不指定端口,直接使用宿主机的端口
测试:进入宿主机/home/wwwroot目录,新建index.html文件
echo hello world! > index.html
浏览器访问ip测试结果
2、安装php-fpm
docker pull php:7.4.33-fpm
访问docker仓库镜像:Docker php指定版本
启动php服务
docker run -p 9000:9000 -d --name php -v /home/wwwroot:/usr/share/nginx/html:cached --privileged=true php:7.4.32-fpm
#配置同上
配置nginx配置文件,将容器中的配置文件复制到宿主机上打开编辑
docker cp nginx:/etc/nginx/conf.d/default.conf ./default.conf
修改以下配置
把配置文件覆盖回去,重启nginx服务
docker cp ./default.conf nginx:/etc/nginx/conf.d/default.conf
docker restart nginx
测试:进入宿主机/home/wwwroot目录,新建index.php输出phpinfo(),查看浏览器
echo '<?php echo phpinfo();' > index.php
如果需要安装gd库,注意php7.4起安装命令有所不同
旧的
apt update
apt install -y libwebp-dev libjpeg-dev libpng-dev libfreetype6-dev
docker-php-source extract
docker-php-ext-configure gd \
--with-webp-dir=/usr/include/webp \
--with-jpeg-dir=/usr/include \
--with-png-dir=/usr/include \
--with-freetype-dir=/usr/include/freetype2
docker-php-ext-install gd
docker-php-ext-enable gd
新的
apt update
apt install -y libwebp-dev libjpeg-dev libpng-dev libfreetype6-dev
docker-php-source extract
docker-php-ext-configure gd \
--with-jpeg=/usr/include \
--with-freetype=/usr/include/
docker-php-ext-install gd
docker-php-ext-enable gd
3、安装mysql
docker pull mysql:8.0.23
访问docker仓库镜像:Docker mysql指定版本
启动mysql服务
docker run -itd --name mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 mysql:8.0.23
mysql8版本可能会出现以下问题:
连接Docker启动的mysql出现:ERROR 2059 (HY000): Authentication plugin 'caching_sha2_password' cannot be loaded
可能因为高版本的原因吧,未去深究,解决方法:
#进入docker后进入mysql
mysql -uroot -p
use mysql;
ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '要设置的密码';
flush privileges;
4、安装mongodb
docker pull mongo:4.4
启动mongodb服务
docker run -p 27017:27017 -v /data/mongodb:/data/db --name mongodb -d mongo
5、安装redis
docker pull redis
访问docker仓库镜像:Docker redis指定版本
启动redis服务
docker run -itd --name redis -p 6379:6379 redis
三、安装php扩展
1、redis扩展
#下载扩展包
wget https://pecl.php.net/get/redis-5.3.7.tgz
#解压扩展包
tar zxvf redis-5.3.7.tgz
#将扩展包下的文件复制到php容器里
docker cp redis-5.3.7/ php:/usr/src/php/ext/redis
#进入php容器安装redis扩展
docker exec -it php /bin/bash
docker-php-ext-install redis
#查看已装扩展
php -m
2、mysql扩展
#直接进入php容器安装
docker-php-ext-install pdo_mysql
3、mongodb扩展
#安装redis依赖库,已安装的忽略
apt-get install -y libssl-dev
pecl install mongodb
echo "extension=mongodb.so" >> /usr/local/etc/php/conf.d/docker-php-ext-mongodb.ini
#查看扩展
php -m