摘要:docker配置PHP环境
Centos内核版本未3.1以上。系统要是64位系统
uname -r
rm -rf /var/lib/docker
sudo yum install -y yum-utils device-mapper-persistent-data lvm2
查看是否已经安装了这个
rpm -qa|grep device-mapper-persistent-data
rpm -qa|grep lvm2
yum-config-manager \
--add-repo \
http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
yum list docker-ce --showduplicates | sort -r
安装指定版本
sudo yum install docker-ce-<VERSION_STRING> docker-ce-cli-<VERSION_STRING> containerd.io
安装最新版
sudo yum install docker-ce docker-ce-cli containerd.io
docker version
systemctl enable docker
systemctl start docker
配置镜像
cd /etc/docker
ls
vim daemon.json
之后可以很快的进行处理
{"registry-mirrors":["https://gvky2tl9.mirror.aliyuncs.com/"]}
重启
$ sudo systemctl daemon-reload
$ sudo systemctl restart docker
docker image ls
docker info
· 1、LXC 是基于Linux的
· 2、Namespace 资源隔离
· 3、cgroup 资源限制
· 4、AUFS
docker run --name mysql -d -p 6666:3306 -e MYSQL_EOOT_PASSWOD=1234 mysql:5.7
docker container ps -a
docker container rm -f 容器名
docker contianer exec -it mysql /bin/bash
docker inspect mysql 里面的Mounts
dockers logs -f 容器名
docker rmi 镜像名
docker logs 容器名
free -m
top
df -h
ifconfig
方法1:lsof -i:端口号
方法2:netstat -apn|grep 端口号
# 释放网页缓存
echo 1 > /proc/sys/vm/drop_caches
# 释放目录项和索引
echo 2 > /proc/sys/vm/drop_caches
# 释放网页缓存,目录项和索引
echo 3 > /proc/sys/vm/drop_caches
拉PHP
docker pull php:7.0-fpm
# sqlserver 目前安装7.0靠谱
启动容器
docker run --name oceania-php -v ~/nginx/www:/www -d php:7.0-fpm # 将php文件映射到了php容器下的/www中之后nginx配置需要
docker-php-source extract
# 此命令,实际上就是在PHP容器中创建一个/usr/src/php的目录,里面放了一些自带的文件而已。我们就把它当作一个从互联网中下载下来的PHP扩展源码的存放目录即可。事实上,所有PHP扩展源码扩展存放的路径: /usr/src/php/ext 里面。
docker-php-source delete #删除
php -m #查看cli下加载了那些模块
php -i #查看cli下的详细信息
# 查看当前的扩展包
cd /usr/src/php/ext
ls # 此时可以看到很多启用的未启用的镜像默认携带的扩展
# 安装mysqli sockets扩展
docker exec -it oceania-php /bin/bash
docker-php-ext-install mysqli
docker-php-ext-install sockets
exit
docker restart oceania-php
docker ps -a
# 安装sqlserver扩展
1、安装ODBC扩展
# 需要先进行更新
apt-get update
apt-get install unixodbc unixodbc-dev -y \
&& docker-php-ext-configure pdo_odbc --with-pdo-odbc=unixODBC,/usr \
&& docker-php-ext-install pdo_odbc
# 安装后执行php -m 查看已经安装过了PDO_ODBC
exit
docker ps -a
docker restart oceania-php
2、安装sqlsrv扩展
pecl install sqlsrv-4.3.0
docker-php-ext-enable sqlsrv
3、安装pdo_sqlsrv扩展
pecl install pdo_sqlsrv-4.3.0
docker-php-ext-enable pdo_sqlsrv
# 微软文档地址
https://docs.microsoft.com/en-us/sql/connect/php/microsoft-php-drivers-for-sql-server-support-matrix?view=sql-server-ver15#php-version-support
拉取Nginx
docker pull nginx
挂载启动
docker run --name oceania-nginx -p 8083:80 -d \
-v ~/nginx/www:/usr/share/nginx/html:ro \
-v ~/nginx/conf/conf.d:/etc/nginx/conf.d:ro \
--link oceania-php:php \
nginx
新增配置文件
下面的可以跑PHP了
/root/nginx/conf/conf.d/oceania.conf
server {
listen 80;
server_name localhost;
root /usr/share/nginx/html; # nginx容器中的位置
index index.html;
location / {
root /usr/share/nginx/html;# nginx容器中的位置
index index.html index.htm index.php;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/share/nginx/html;# nginx容器中的位置
}
location ~ \.php$ {
fastcgi_pass php:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /www/$fastcgi_script_name; # 这里是php容器中的位置
include fastcgi_params;
}
}
查看conf文件的配置信息是否正确
PHP跟Nginx的映射文件需要一致 例如这里使用的nginx 下的WWW
调整完之后需要重启对应docker 容器 docker restart 容器ID
缺少了odbc扩展
apt-get install unixodbc unixodbc-dev -y \
&& docker-php-ext-configure pdo_odbc --with-pdo-odbc=unixODBC,/usr \
&& docker-php-ext-install pdo_odbc
# 安装后执行php -m 查看已经安装过了PDO_ODBC
exit
docker ps -a
docker restart oceania-php
# 扩展不对,换一个扩展
pecl install sqlsrv-5.8.1
之前是4.0.8换个版本用4.3.0就好了
docker-php-source extract # 把PHP内置扩展目录打开,发现有个odbc扩展
docker-php-ext-install odbc # 启用这个扩展
版本换了5.3.0就没有这个错误了,但是提示ODBC不可用Access the following URL to download the ODBC Driver for SQL Server for x64: https://go.microsoft.com/fwlink/?LinkId=163712
# 生成镜像
docker commit -a "oceania-php74-images" -m "my php" oceania-php74 eric-images:v1
# 此时可以查看到已经生成完成
docker images
# 生成容器
docker run --name myphp-fpm -v ~/nginx/www:/www -d eric-images:v1
# 查看
docker exec -it myphp-fpm /bin/bash
php -m # 可以查看到已经完全生成了一个配置好的容器
git clone https://github.com/yeszao/dnmp.git
# 之后按照github 说明即可,其中docker-compose up 后会报错是因为version设置的太高 改为2 即可
# 生成镜像
docker commit -a "oceania nginx images" -m "oceania" oceania-nginx74 oceania-nginx-images:v1
# 此时可以查看到已经生成完成
docker images
# 生成容器
docker run --name nginx74 -p 8090:80 -d \
-v ~/nginx/www:/usr/share/nginx/html:ro \
-v ~/nginx/conf/conf.d:/etc/nginx/conf.d:ro \
--link php74:php \
oceania-nginx-images:v1
# 查看
docker ps -a
# 拉取Centos7
docker pull centos:centos7
# 生成操作容器
docker run -itd --name centos7-test --privileged=true centos:centos7 /usr/sbin/init
# 进入容器测试
docker exec -it centos7-test /bin/bash
# 执行systemcl
systemctl # 出现命令提示,说明这时候可以用管理员操作
# 这里安装PHP74 采用微软提供的办法,地址如下
https://www.microsoft.com/en-us/sql-server/developer-get-started/php/rhel
# 安装PHP
yum install https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
yum install https://rpms.remirepo.net/enterprise/remi-release-7.rpm
subscription-manager repos --enable=rhel-7-server-optional-rpms
yum install yum-utils
yum-config-manager --enable remi-php74
yum update
yum install php php-pdo php-xml php-pear php-devel re2c gcc-c++ gcc
# 配置ODBC等Sqlserver支持
#RedHat Enterprise Server 6
curl https://packages.microsoft.com/config/rhel/6/prod.repo > /etc/yum.repos.d/mssql-release.repo
#RedHat Enterprise Server 7
curl https://packages.microsoft.com/config/rhel/7/prod.repo > /etc/yum.repos.d/mssql-release.repo
#RedHat Enterprise Server 8 and Oracle Linux 8
curl https://packages.microsoft.com/config/rhel/8/prod.repo > /etc/yum.repos.d/mssql-release.repo
# 设置过源之后进行安装
sudo yum remove unixODBC-utf16 unixODBC-utf16-devel #to avoid conflicts
sudo ACCEPT_EULA=Y yum install msodbcsql17
# optional: for bcp and sqlcmd
sudo ACCEPT_EULA=Y yum install mssql-tools
echo 'export PATH="$PATH:/opt/mssql-tools/bin"' >> ~/.bash_profile
echo 'export PATH="$PATH:/opt/mssql-tools/bin"' >> ~/.bashrc
source ~/.bashrc
# optional: for unixODBC development headers
sudo yum install unixODBC-devel
# 配置Sqlserver 扩展 其中出现无法用pecl安装的问题可以先使用wget下载对应的包 然后在安装
sudo pecl install sqlsrv
sudo pecl install pdo_sqlsrv
sudo su
echo extension=pdo_sqlsrv.so >> `php --ini | grep "Scan for additional .ini files" | sed -e "s|.*:\s*||"`/30-pdo_sqlsrv.ini
echo extension=sqlsrv.so >> `php --ini | grep "Scan for additional .ini files" | sed -e "s|.*:\s*||"`/20-sqlsrv.ini
exit
查看容器的构建命令
yum install -y python-pip
pip install runlike
runlike -p nginx
容器构建命令示例
docker run -itd --name web-test -p 8090:80 \
-v /root/dockerweb/www:/var/www/html \
-v /root/dockerweb/conf/test.conf.d:/etc/httpd/conf.d \
--privileged=true 1d12d7a79f9a /usr/sbin/init
打开后出现php无法执行,直接显示源码或者下载
1.下载安装: rpm -Uvh https://mirror.webtatic.com/yum/el7/epel-release.rpm
rpm -Uvh https://mirror.webtatic.com/yum/el7/webtatic-release.rpm
2.mod_php71w安装:
yum install mod_php71w
3.http.conf AddType application/x-httpd-php .php
docker run -itd --name oa -p 8080:80 \
-v /root/dockerweb/www/oa:/var/www/html \
-v /root/dockerweb/conf/oa/conf.d:/etc/httpd/conf.d \
--privileged=true 1d12d7a79f9a /usr/sbin/init
docker run -itd --name OceaniaIt \
--privileged=true 01eef62a8b9b /usr/sbin/init