项目需要迁移, 容器化开发tp项目。
1.下载需要的镜像文件
下载的地方很多,daocloud aliyun等等,自行百度
2. 根据镜像运行容器, 其实可以通过docker-compose 来做,这里分几步做
基础命令: -v 挂载本地目录, -p端口印射 ,--link 容器连接
1). 创建数据库容器
docker run -p 3309:3306 --name devmysql -d -v /Volumes/mac/UsersDoc/vol/workstation/data/devwygx:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=3 aa5
2). php-fpm容器创建,需要连接mysql数据库
docker run -d -v /Volumes/mac/UsersDoc/vol/workstation/www/thinkphp_manage:/var/www/html -p 9000:9000 --link devmysql:mysql --name php-fpm b75
--link输入之后可以通过
docker exec php-fpm env
会有如下环境参数
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
HOSTNAME=b7846784e971
MYSQL_PORT=tcp://172.17.0.2:3306
MYSQL_PORT_3306_TCP=tcp://172.17.0.2:3306
MYSQL_PORT_3306_TCP_ADDR=172.17.0.2
MYSQL_PORT_3306_TCP_PORT=3306
MYSQL_PORT_3306_TCP_PROTO=tcp
MYSQL_NAME=/php-fpm/mysql
MYSQL_ENV_MYSQL_ROOT_PASSWORD=3
MYSQL_ENV_MYSQL_MAJOR=5.7
MYSQL_ENV_MYSQL_VERSION=5.7.4-m14
PHP_INI_DIR=/usr/local/etc/php
PHP_EXTRA_CONFIGURE_ARGS=--enable-fpm --with-fpm-user=www-data --with-fpm-group=www-data
GPG_KEYS=1A4E8B7277C42E53DBA9C7B9BCAA30EA9C0D5763
PHP_VERSION=7.0.3
PHP_FILENAME=php-7.0.3.tar.xz
PHP_SHA256=3af2b62617a0e46214500fc3e7f4a421067224913070844d3665d6cc925a1cca
HOME=/root
3)nginx 容器搭建,连接php-fpm解析php文件
docker run --name thinkphp -d -v /Volumes/mac/UsersDoc/vol/workstation/www/thinkphp_manage:/var/www/html -P --link php-fpm:php-fpm c5c
-P 随机端口印射
4)更改nginx配置文件
docker cp thinkphp:/etc/nginx/conf.d/default.conf default.conf
复制nginx配置文件到当前目录下,
更改配置文件
server {
listen 80;
server_name localhost;
#charset koi8-r;
#access_log /var/log/nginx/host.access.log main;
location / { # /root 必须有,我在这卡很久
root /var/www/html/public; # 挂载到需要访问的目录
index index.php index.html index.htm;
}
#error_page 404 /404.html;
# redirect server error pages to the static page /50x.html
#
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/share/nginx/html;
}
# proxy the PHP scripts to Apache listening on 127.0.0.1:80
#
#location ~ \.php$ {
# proxy_pass http://127.0.0.1;
#}
# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
#
location ~ \.php$ {
# root /var/www/html;
fastcgi_pass php-fpm:9000; # 很重要, 这里需要改到链接的php-fpm的印射名字或者端口
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /var/www/html/public$fastcgi_script_name; # document_root 可能不生效,手动改下
include fastcgi_params;
}
# deny access to .htaccess files, if Apache's document root
# concurs with nginx's one
#
#location ~ /\.ht {
# deny all;
#}
}
坑
directory index of "/var/www/html/" is forbidden
检查nginx的配置文件 ,检查location/
或者是文件权限
Primary script unknown" while reading response header from upstream
检查fastcgi部分配置
尤其是php-fpm的端口和$document_root的配置文件