您现在的位置是:首页 > 技术教程 正文

如何使用docker部署php服务

admin 阅读: 2024-03-16
后台-插件-广告管理-内容页头部广告(手机)

前言

前期准备,服务器需要先安装好docker、docker-compose,文章内容不涉及如何安装docker的相关内容。

制作的内容,使用nginx+php的新基础镜像部署php服务,然后使用openresty做反向代理。

nginx+php的新基础镜像制作过程,可以参考之前的文章,地址如下:使用alpine基础镜像,安装nginx+php,然后构建新基础镜像-CSDN博客

一、安装openresty

1、创建openresty相关目录,执行如下命令。

  1. mkdir -p /docker/openresty/{conf.d,logs,html,cert}
  2. cd /docker/openresty/

2、编写yaml文件,内容如下;version替换成自己的docker-compose版本。

  1. vim docker-compose.yml
  2. version: '2.2.2'
  3. services:
  4. openresty:
  5. image: openresty/openresty
  6. restart: unless-stopped
  7. ports:
  8. - "80:80"
  9. - "443:443"
  10. container_name: openresty
  11. volumes:
  12. - "./nginx.conf:/usr/local/openresty/nginx/conf/nginx.conf"
  13. - "./conf.d:/usr/local/openresty/nginx/conf/conf.d"
  14. - "./html:/usr/local/openresty/nginx/html"
  15. - "./logs:/usr/local/openresty/nginx/logs"
  16. - "./cert:/usr/local/openresty/nginx/cert"
  17. networks:
  18. - mynet
  19. networks:
  20. mynet:
  21. name: mynet
  22. driver: bridge

3、编写nginx配置,内容如下。

  1. vim nginx.conf
  2. worker_processes 1;
  3. error_log logs/error.log;
  4. events {
  5. worker_connections 1024;
  6. }
  7. http {
  8. server {
  9. listen 80;
  10. location / {
  11. default_type text/html;
  12. content_by_lua_block {
  13. ngx.say("

    hello, ayzen!$

    "
    )
  14. }
  15. }
  16. }
  17. }

4、启动openresty,执行如下命令。

docker-compose up -d

5、检查服务是否正常运行,执行如下命令。

docker-compose ps -a

返回如下内容,说明服务已正常启动,正在运行。

6、检查请求是否正常,执行如下命令。

curl http://127.0.0.1

请求正常,会返回nginx配置的内容,比如下面这样。

7、至此openresty已部署完成,并且可以正常运行响应请求。

二、部署php服务

1、创建test1项目相关目录,执行如下命令。

  1. mkdir -p /docker/test1/html
  2. cd /docker/test1/

2、编写index.php文件,内容如下。

  1. vim html/index.php
  2. <?php
  3. echo "hello ayzen!this is test1!\r\n";

3、编写yaml文件,内容如下;version替换成自己的docker-compose版本。

  1. vim docker-compose.yml
  2. version: '2.2.2'
  3. services:
  4. web:
  5. image: ayzen/nginx-php8.3.3
  6. ports:
  7. - "8081:80"
  8. container_name: test1
  9. command: ["/start.sh"]
  10. volumes:
  11. - "./html:/usr/local/nginx/html"
  12. networks:
  13. - mynet
  14. networks:
  15. mynet:
  16. name: mynet
  17. driver: bridge

4、启动test1项目,执行如下命令。

docker-compose up -d

5、检查项目是否正常运行,执行如下命令。

docker-compose ps -a

返回如下内容,说明项目已正常启动,正在运行。

6、检查项目请求是否可以正常响应,执行如下命令。

curl http://127.0.0.1:8081/index.php

请求正常会返回如下内容。

7、至此test1项目已正常部署完成。

三、项目配置对外提供服务

1、前面的test1项目虽然可以正常提供服务了,但是也只限制与内网当中;如果需要对外提供服务需要加上openresty配合。

2、修改nginx配置增加域名请求,在http模块增加server内容如下。

  1. server {
  2. listen 80;
  3. server_name test1.ayzen.cn;
  4. location / {
  5. proxy_pass http://test1;
  6. proxy_set_header Host $host;
  7. proxy_set_header X-Real-IP $remote_addr;
  8. proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
  9. }
  10. }

3、重启openresty,执行如下命令。

docker-compose down && docker-compose up -d

4、域名解析,将test1.ayzen.cn指向服务器IP;此刻没有域名的可以通过修改hosts实现,执行如下命令。

  1. vim /etc/hosts
  2. #增加一行内容如下
  3. 127.0.0.1 test1.ayzen.cn

5、验证请求是否可以正常代理到test1容器,执行如下命令。

curl http://test1.ayzen.cn/index.php

 如果请求正常返回如下内容,说明配置已生效。

6、至此,代理配置已完成,test1可以正常对外提供服务了。

总结

如何使用docker部署php服务,简单来说只需要三个步骤。

1、使用docker运行openresty容器;

2、部署php服务;

3、配置域名;

因为演示的原因,php项目只有一个index.php文件。在使用过程中可以替换成真正的项目代码。

这只是其中一种玩法,加上本人能力有限,还有许多不足之处还望多多指教,谢谢。

标签:
声明

1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

在线投稿:投稿 站长QQ:1888636

后台-插件-广告管理-内容页尾部广告(手机)
关注我们

扫一扫关注我们,了解最新精彩内容

搜索