首页 » Web前端 » phpgetimagecompose技巧_基于dockercompose跑起一个php网站

phpgetimagecompose技巧_基于dockercompose跑起一个php网站

访客 2024-11-19 0

扫一扫用手机浏览

文章目录 [+]

docker pull nginx

docker pull bitnami/php-fpm

phpgetimagecompose技巧_基于dockercompose跑起一个php网站

docker pull mysql

phpgetimagecompose技巧_基于dockercompose跑起一个php网站
(图片来自网络侵删)
编写docker-compose.yml

version: "3"services: nginx: image: nginx ports: - 80:80 volumes: - ./default.conf:/etc/nginx/conf.d/default.conf ##配置文件位置映射 - .:/usr/share/nginx/html ##网页文件位置映射 depends_on: - php php: image: bitnami/php-fpm volumes: - .:/app ##网页文件位置映射 depends_on: - mysql links: - mysql mysql: image: mysql environment: MYSQL_ROOT_PASSWORD: root MYSQL_PASSWORD: EisBzdye6adiJHHj ##数据库用户密码 MYSQL_DATABASE: www_ammopic_com MYSQL_USER: www_ammopic_com ports: - 3306:3306 volumes: - ./www_ammopic_com.sql:/docker-entrypoint-initdb.d/db.sql问题1:依赖启动

nginx依赖于php-fpm,php-fpm又依赖于mysql,depends_on很好的办理了这个问题

问题2:mysql自动添补创建数据库以及填充数据

虽然可以把mysql先运行起来,然后把sql文件拷贝进去,然后进入容器实行导入脚本,但总以为这样操作很low,都想好了要做一条命令启动一个环境了,如果还有这么多操作就违背初衷了。
查了一下,mysql有个机制,可以从/docker-entrypoint-initdb.d/这个路径下检讨sql文件,sh脚本等,从而实现自动导入数据的功能,非常好用,完美的办理了这个问题

问题3:各容器之间如何通信,统一端口映射到主机非常不优雅

之前操作的时候由于常常开拓,以是像nginx,mysql这些都是把端口直接映射到主机的,这样方便了开拓,但又违背了初衷。
所幸links完美的办理了这个问题,这样在代码里连接mysql,在nginx里连接php-fpm都很方便了,而且不会对外暴露,非常好用

编写nginx配置文件

server { listen 80; listen [::]:80; server_name localhost; root /usr/share/nginx/html/public; location / { if (!-e $request_filename){ rewrite ^(.)$ /index.php?s=$1 last; break; } index index.html index.php index.htm; } error_page 500 502 503 504 /50x.html; location = /50x.html { root /usr/share/nginx/html; } location ~ \.php$ { root /app/public; fastcgi_pass php:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; }}

这种写了不知道多少遍的配置文件,居然也涌现了翻船的时候,正应了那句话,拳不离手曲不离口。

问题1:root目录

thinkphp和laravel一样,是须要将根目录映射到public目录的,这该死的记性

问题2:连接到php-fpm该当如何写

以前写配置的时候nginx和php-fpm都是在同一台机器上,以是代码位置也放在了一起,这一次代码分别在nginx容器和php-fpm容器里,一时还写不对了。
末了测试创造,在连接php-fpm的配置里,须要写的文件位置是php-fpm容器里的代码路径,如上述文件的/app/public

末了实行

docker compose up,镜像没有问题,但网站依旧访问不了,究其缘故原由,是由于奇葩的开拓者写的奇葩的逻辑,与本文想讲的技能无关了,但依然忍不住想在这里吐槽,这种不靠谱的程序员什么时候能少一点……

标签:

相关文章

QQ伪装黑客代码大全技术与风险警示

网络安全问题日益凸显。QQ作为一种流行的社交工具,成为了黑客攻击的主要目标之一。本文将针对QQ伪装黑客代码大全进行深入剖析,揭示其...

Web前端 2025-03-02 阅读1 评论0