当前位置: 首页 > 后端技术 > PHP

[docker]docker安装配置nginx+php+composer

时间:2023-03-29 13:59:37 PHP

1.安装php7和安装docker就不赘述了。现在在docker中安装php7,首先拉取镜像:dockerpullphp:7.1-fpm这个镜像集成了php和php-fpm,可以看成是php-fpm,应该和nginx一起使用。先运行:dockerrun-p9000:9000--namephp7-v/docker/www:/www--privileged=true-dphp:7.1-fpm/docker/www:/www表示容器中的www目录它映射到宿主环境的/docker/www目录。这个时候容器的www目录就是我们网站的根目录,这个非常重要。后面的配置分析会解析到这个www目录2.安装nginx1.12dockerpullnginx:1.12运行前我们需要创建nginx配置目录和日志目录mkdir/docker/nginx/conf.dmkdir/docker/nginx/logs然后在conf.d目录下新建default.conf配置文件server{listen80;#这个www目录就是nginx容器根目录/www中的www目录;服务器名称本地主机;location/{indexindex.htmlindex.php;}error_page500502503504/50x.html;location=/50x.html{root/usr/share/nginx/html;}location~\.php${fastcgi_passphp:9000;fastcgi_indexindex.php;#这个www目录就是fpm容器中的php-www目录fastcgi_paramSCRIPT_FILENAME/www/$fastcgi_script_name;包括fastcgi_params;}}最后运行dockerrun-p80:80--namenginx-v/docker/www:/www-v/docker/nginx/conf.d:/etc/nginx/conf.d-v/docker/nginx/logs:/wwwlogs--linkphp7:php--privileged=true-dnginx:1.12注意nginx和php-fpm这两个容器需要被挂了宿主机环境中的同一个目录可以正确解析,即/docker/www目录3.安装composer有时候需要用composer安装php包,比如laravel,但是php里面没有co-fpm图像mposer所以我们再安装一个composer镜像dockerpullcomposerrunningcomposer容器不同于运行php或者nginx容器,它不需要后台运行,而是使用命令行交互方式,即不使用-d,使用-它。同时composer是在php项目和目录下运行的,所以还需要挂载/docker/www目录dockerrun-it--namecomposer-v/docker/www:/app--privileged=truecomposer例如新建一个laravel项目dockerrun-it--namecomposer-v/docker/www:/app--privileged=truecomposercomposercreate-project--prefer-distlaravel/拉拉维尔./5.5.*4.安装mysql5.6dockerpullmysql:5.6创建mysql配置目录、数据目录、日志目录mkdir/docker/mysql/confmkdir/docker/mysql/datamkdir/docker/mysql/logs在/docker/下新建my.cnf配置文件mysql/conf目录,如下[mysqld]pid-file=/var/run/mysqld/mysqld.pidsocket=/var/run/mysqld/mysqld.sockdatadir=/var/lib/mysql#log-error=/var/日志/mysql/错误。log#默认情况下我们只接受来自localhostbind-address=0.0.0.0的连接#建议禁用符号链接以防止各种安全风险symbolic-links=0init_connect='SETcollat??ion_connection=utf8_unicode_ci'init_AMconnect-utf8'SETN'server=utf8collat??ion-server=utf8_unicode_ciskip-字符-set-client-handshake#skip-grant-tables[client]default-character-set=utf8[mysql]default-character-set=utf8最后运行容器:dockerrun-p3306:3306--namemysql-v/docker/mysql/conf/my.cnf:/etc/mysql/conf.d/mysql.cnf-v/docker/mysql/logs:/logs-v/docker/mysql/data:/var/lib/mysql-eMYSQL_ROOT_PASSWORD=mypass--privileged=true-dmysql:5.6注意:这里的-eMYSQL_ROOT_PASSWORD=mypass参数设置了root用户的密码为mypass。如果要修改密码,先登录mysql镜像:dockerexec-ite6b1137ba220/bin/bash进入镜像后,使用root用户进入数据库mysql-uroot-p查看当前mysql密码:tr'0''n'