docker-compose 学习:部署 ThinkPHP 5 网站

news/2024/5/9 8:19:49/文章来源:https://blog.csdn.net/weixin_33713707/article/details/92110292

2019独角兽企业重金招聘Python工程师标准>>> hot3.png

接前一个 https://blog.csdn.net/u010953609/article/details/89337660

LNMP搭建之后,就需要实际部署自己的网站,这里选择 ThinkPHP 5 完整版作为样本进行测试

既然 LNMP 架构搭建好了,接下来就是填充“水泥”

    1. WEB 对应的WEB目录
    1. php 脚本对应的目录,一般都在WEB目录一起
    1. mysql 数据

mysql 数据目录在开始项目时,一般都是一个空目录,所以,为了能将 这个“水泥”装填进去,另外建立一个可以操作 mysql 数据的容器:phpmyadmin

docker 和 linux 脚本熟练的话,可直接将 mysql 初始化数据、密码写入 start.sh 脚本,初级阶段直接开一个 phpmyadmin 比较直观!

环境:

visualbox ubuntu 1804 本地删除了 mysql

1、准备项目目录

直接 cp 上一次 搭建 LNMP 的整个目录,然后下载 TP 5 的完整版并解压到本次项目的 nginx/www 目录下

以下是我的项目结构,项目名称就叫 thinkphp

** mysql/data 内容太多,我 tree 的时候先删除了 ** ThinkPHP 库 层次很多,这里只列举到 4 层

~/compose$ tree thinkphp/ -L 4

	thinkphp/├── docker-compose.yml├── mysql│   ├── data│   └── Dockerfile├── nginx│   ├── conf.d│   │   └── default.conf│   ├── Dockerfile│   └── www│       ├── html│       │   ├── index.php│       │   ├── mysqli.php│       │   ├── pdo2.php│       │   └── pdo.php│       └── tp5│           ├── application│           ├── build.php│           ├── CHANGELOG.md│           ├── composer.json│           ├── composer.lock│           ├── extend│           ├── index.php│           ├── LICENSE.txt│           ├── public│           ├── README.md│           ├── runtime│           ├── think│           ├── thinkphp│           └── vendor└── phpfpm└── Dockerfile14 directories, 17 files

2、构建模版文件

  1. 先使用 ss 查看 WEB 端口、php 、mysql 端口 、phpmyadmin 端口 以下是我将要使用的端口 ss -tlnp |grep 83 ss -tlnp |grep 9003 ss -tlnp |grep 3309 ss -tlnp |grep 9997

  2. 使用 docker ps -a 查看已经使用的容器名字,以免冲突

  3. 我的 docker-compose.yml 如下 ~/compose/thinkphp$ cat docker-compose.yml

     version: "3"services:web_server:build: ./nginx  container_name: nginx-2networks:- tp5-netdepends_on:- phpfpm    ports:- "83:80"- "4431:443"volumes:- ./nginx/www/tp5/public:/var/www/html- ./nginx/conf.d:/etc/nginx/conf.d  db_server:build: ./mysql  container_name: mysql57-2networks:- tp5-net- phpmyadmin-netenvironment:MYSQL_ROOT_PASSWORD: 123456ports:- "3309:3306"volumes:- ./mysql/data:/var/lib/mysqlphpfpm:build: ./phpfpm  container_name: phpfpm72networks:- tp5-netdepends_on:- db_server ports:- "9003:9000"volumes:- ./nginx/www/tp5:/var/www/html- ./nginx/conf.d:/etc/nginx/conf.dphpmyadmin:image: phpmyadmin/phpmyadmincontainer_name: phpmyadminlinks:- db_server:db# external_links:#    - db_server:dbnetworks:- tp5-net- phpmyadmin-netdepends_on:- db_serverports:- 9997:80networks:tp5-net:phpmyadmin-net:
    

*** 其中 links 和 external_links 两个都不推荐使用,我也不知道还有什么可以代替 *** 以上 links 和 external_links 经过实测,都是可以的

3、 测试

** 记得先 docker-compose up -d

本地测试: curl 127.0.0.1:83 curl 127.0.0.1:9997

浏览器测试: http://192.168.1.193:83 在这里插入图片描述

http://192.168.1.193:9997 在这里插入图片描述

4、 错误处理

  1. phpmyadmin 输入了 root 密码 123456,确认是正确的,但是,总是提示错误

docker-compose.yml 中 phpmyadmin 容器加上links (我是先测试了 external_links )之后, OK!

在这里插入图片描述

  1. 其他错误 基本上都是 名称冲突,因为都是 cp 过来的,总有一些修改漏掉了 还有就是端口冲突

    ** 每次修改完之后,一定要 restart 修改过的容器

    最简单的方式就是 docker-compose down docker-compose up -d

5、 后记

以上都是学习中的一些点滴记录,过程都比较粗糙 建议多参考 phpmyadmin https://hub.docker.com/r/phpmyadmin/phpmyadmin/dockerfile

个人觉得: 1. nginx 和 php fpm 分成 2 个容器有些多余 2. 这个 phpmyadmin 就是直接在 php fpm alpine 容器下 安装了 nginx 3. 以上 docker-compose.yml 中 nginx 和 php fpm 容器的 volume 实际都对应的是同一个目录 4. nginx 对应到 thinkphp 的 public , php 对应到项目根目录,这应该是因为 TP 项目结构导致的,但是,nginx 配置里面 2 个 root 又正好反过来了!这里感觉很别扭!主要是 nginx 理解不透! 5. 如果 nginx 和 php 在同一个容器,上面这个别扭的问题就应该不存在了

以下是我的 nginx 网站配置文件

~/compose/thinkphp/nginx/conf.d$ cat default.conf

server {listen       80;server_name  localhost;location / {root   /var/www/html;index  index.html index.htm index.php;}#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   /var/www/html;}location ~ \.php$ {# root           /var/www/html;root           /var/www/html/public;# fastcgi_pass   127.0.0.1:9000;    # 必须修改为compose模版文件中php容器名字fastcgi_pass   phpfpm72:9000;fastcgi_index  index.php;fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name; # 修改为$document_rootinclude        fastcgi_params;}
}

转载于:https://my.oschina.net/u/1440971/blog/3039330

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_735357.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

服务器显示屏出现白屏,win10开机白屏不显示桌面怎么办_网站服务器运行维护,win10,白屏,桌面...

win7如何使用自带录制视频软件?_网站服务器运行维护win7使用自带录制视频软件的方法:首先打开运行窗口输入cmd;然后管理员界面中输入【psr.exe】或者psr回车确定打开,并在工具上点击开始记录;最后点击停止记录并弹出保…

php网站源码怎么看框架_前端如何看框架源码-egg.js源码探索日志9

每天一小步,书接上回拖鞋:前端如何看框架源码-egg.js源码探索日志8​zhuanlan.zhihu.com今天来到了,egg的最后一个核心模块Loader,这块代码我看了好久,至少比别的部分久,代码太多,也特别的绕&am…

url提取工具_「亚马逊运营」盘点 2020 年卖家最应尝试的 16 款免费 SEO 工具

做了多年的 SEO 优化,你可能用过无数 SEO 优化工具,不管是免费的还是付费的。这里推荐几款免费的 SEO 工具。免费SEO工具主要分为以下5类:关键词研究;站内SEO优化;技术SEO(Technical SEO);分析类&#xff1…

个人介绍网页模板html_个人博客网站怎么做好搜索优化seo

各个博客软件开源程序的功能都应该是差不多。介绍一下个人博客怎么做好优化。 首先一点,我觉得博客更多的是一个分享交流工具,它生成的网站结构,网页代码与很多网站相比算是比较搜索引擎友好。 但是Blog页面都是用模板生成,有很多…

代码统计工具有哪几种_SEO工具篇:如何安装百度统计代码

本文来自恩思传媒-小雨。百度统计是百度推出的一款稳定、专业、安全的统计分析工具。能够提供权威、准确、实时的流量质量和访客行为分析,助力日常监控,为系统优化、提升投资回报率等目标提供指导。同时,百度统计特别推出了高级分析平台&…

url ip跳转域名_网站被降权,利用301跳转到新域名,对新网站排名有影响吗?

在做SEO的过程中,我们总是会遇到一些有争议性的问题,这就需要我们根据长期的运营经验,给出相关性的解决方案,比如:站长们经常会有这样的疑问: 我有一个老域名,它被降权了,但我又想用…

debian9 php 建站,Debian9配置LightTPD/PHP7.0/SQLite轻便网站运行环境

LightTPD,是一款由德国人开发的Web服务器软件,其特点在于提高网站的性能、安全,以及快速响应且兼容灵活的Web服务器环境。LightTPD占用内存较低、CPU占用率低、效能好以及丰富的模块等特点。Lighttpd支持FastCGI,CGI,A…

群辉linux系统搭建网站,在群晖NAS上搭建 Git Server

1 概述在群晖nas上使用 git server 套件还是比较麻烦的,原因有两点:一是NAS的控制台上没有BASH,git 相关的命令只能使用 SSL 客户端连接到NAS上进操作。二是配置git时需要使用 root 或 admin 账户,而 push / fetch 使用的账户一般…

测试网站服务器性能测试,网站服务器压力Web性能测试(2):Webbench:最多模拟3万个并发连接数测试压力...

1、Webbench最多可以模拟3万个并发连接数来测试服务器压力,可以设置压力测试时间和测试请求的成功率。安装Webbench命令:wget https://home.tiscali.cz/~cz210552/distfiles/webbench-1.5.tar.gztar zxvf webbench-1.5.tar.gzcd webbench-1.5make &&…

手机搭建博客网站

文章目录一、安装openssh二、更换国内源三、安装mysql四、安装nginx五、安装php-fpm六、新建数据库七、下载 WordPress八、安装wordpress文章部分内容引用:https://www.sqlsec.com/2018/05/termux.html#toc-heading-115 国光termux教程 工欲善其事,必先利其器。 一…

使用代理ip进行反反爬虫——爬取句子迷网站,获取小说龙族经典句子

这个爬虫实践做了好久了,不定期更新,遭遇了反爬虫,记录一下反反爬过程。 爬取不到一会就会被封ip,网站返回403,换个ip就好了,但一样会被封,来不及爬取所有句子。 参照网上免费代理ip的方式 不过这个方法爬…

沙盒单机网站代表-Steam【推荐】

Steam平台是Valve公司聘请BitTorrent(BT下载)发明者布拉姆科恩亲自开发设计的游戏平台。Steam平台目前是一款全球最大的综合性数字发行平台。玩家可以在该平台购买、下载、讨论、上传和分享游戏和软件。👌,没有十足的抵抗力和小康的生活水平千万别触碰St…

java struts2国际化代码下载_struts2的国际化实现网站整体中英文切换实例代码

本文介绍了struts2的国际化实现网站整体中英文切换实例代码,分享给大家,具体如下:环境要求:struts2框架环境搭建成功为了实现程序的国际化,必须先提供程序所需要的资源文件。资源文件的内容基本是key-value对&#xff…

mysql-pius代码生成网站_MyBatis-Plus系列之代码生成器

代码生成器,也叫逆向工程,是根据数据库里的表结构,自动生成对应的实体类、映射文件和接口。这和hibernate的自动建表恰好相反。很早之前,写了一个代码生成器的工程,自己也一直在用,很方便,也经过…

网站自动登录功能的设计

我相信有很多IT者都会遇到公司要求网站可以实现自动登录,那什么是自动登录呢? 所谓自动登陆就是当用户第一次访问网站时,输入用户名和密码,然后勾选了自动登陆复选框,进入首页后,点击退出登陆,关…

关闭宝塔80端口_服务器网站运行宝塔环境安装教程

宝塔环境安装本教程使用宝塔linux面板来作为网站的运行环境,其他的这类软件也是可以的。首先是宝塔面板的安装我们首先连接到服务器,购买服务器后如何远程连接登陆?然后登陆进入了下图这个界面。宝塔环境安装我们打开宝塔面板的官方网站&…

数据包发送时 源端口是随机生成的吗_当你访问XXX网站时,从访问到内容返回呈现,中间发生了什么?...

想必不少小伙伴面试过程中,会遇到「当键入网址后,到网页显示,其间发生了什么」的面试题。这次,小林我带大家一起探究下,一个数据包在网络中的心路历程。每个阶段都有数据包的「心路历程」,我们一起看看它说…

设计电子商务网站建设方案_如何做一份公司网站建设方案书

点击蓝字获取更多优惠信息在决定做好网站建设前,公司应该先对市场情况进行分析、明确建设网站的目的和功能性,并根据市场调查结果对网站建设的各项要求要点做出规划。网站规划对网站建设起到计划和指导的作用,对网站的内容和维护起到定位作用…

网站改成静态页面打不开_网站优化系统诊断和SEO体验

在做企业网站优化时,常遇到很多的问题,比如网站原创内容不收录,收录后没有排名,有排名却怎么也排不到首页等。所以就需要我们系统的对企业网站优化做一个很好的诊断,帮助我们调整网站细节,更好的提高网站权…

您与此网站之间建立的连接并非完全安全 ????

有时候即使SSL证书有效, Chrome还是显示"并非完全安全"?比如: 肿么肥事呢?原来一个网页不完全由1个https包得到的, 而是由多个资源共同组成的,打开网络工具就可以看到: 在Size那一列, 只有第1个资源(通常是html)是不会走缓存的,这个资源也来自浏览器地址栏里面所看…