作者:欧阳羽昌53 | 来源:互联网 | 2023-09-23 10:48
服务器环境(centos7.4)2.docker安装sudoyum-yinstalldocker-cedockerversion查看docker版本安装mysqlnginxredi
- 服务器环境(centos7.4)
2.docker 安装sudo yum -y install docker-ce
docker version //查看docker版本
- 安装mysql nginx redis php(非root用户请使用sudo命令)
第一步:拉取docker中镜像docker pull php:7.2-fpm
docker pull nginx
docker pull mysql:5.7
docker pull redis:3.2
docker images
第二步:建立容器
# 自有docker mysql 容器
docker run --name myDb -p 3306:3306 -e MYSQL_ROOT_PASSWORD=root -d mysql:5.7
# 自有docker redis 容器
docker run --name myRedis -p 6379:6379 -d redis:3.2
# 自有docker php 容器
docker run -d -p 9000:9000 --name myPhp -v /usr/html:/var/www/html -v /etc/myPhp:/usr/local/etc/php --link myDb:myDb --link myRedis:myRedis --privileged=true php:7.2-fpm
# 自有docker nginx 容器
docker run \
--name myNginx -d \
-p 80:80 -p 443:443 \
-v /usr/html:/usr/share/nginx/html \
-v /etc/myNginx/nginx.conf:/etc/nginx/nginx.conf:ro \
-v /etc/myNginx/servers:/etc/nginx/servers \
-v /etc/myNginx/letsencrypt:/etc/nginx/letsencrypt:rw \
-v /var/log/myNginx:/var/log/nginx \
--link myPhp:myPhp --privileged=true \
nginx
备注:-v 参数为挂载目录,即将容器内部目录软连到宿主机目录,对于容器的配置和日志挂载可以方便直接在宿主机查看,当然不挂载也可以进入容器内部查看。进入容器命令docker exec -ti containerID /bin/bash
。
有两个坑:1.nginx挂载配置目录时nginx.conf最好提前在宿主机对应目录下添加好(因为nginx.conf是个文件非目录,docker挂载会提示一些问题)2. php挂载php.ini时也同样在宿主机中先配置好。后面安装php扩展会用到
第三步. 启动容器
# 查看容器
docker ps -a
# 启动容器
docker start containId
- docker php 扩展安装
我使用pe c l安装# 进入php容器
docker exec -ti myPhp /bin/bash
使用pecl安装扩展命令, XXX为扩展名
pecl install xxxx && docker-php-ect-enable xxx
坑1: 我安装mongodb扩展时出现pecl拉取成功,docker-php-ext-enable脚本命令添加扩展失败的问题。解决如下
php.ini添加so文件扩展, 并将so 文件从/usr/local/lib/php/extension/o-debug-non-zts-20170718/ 中复制到 对应目录下 /usr/local/lib/php/pecl/20170718下。具体目录路径根据自己环境来看。此处php.ini在容器生成时已挂载,不需要在容器内部再添加新的php.ini
- phpinfo()查看环境吧。
参考:博客:docker 从入门到自动化构建 PHP 环境
docker
php