当前位置: 首页 > 知识库问答 >
问题:

docker - 如何在Rocky Linux 9.4中通过Docker部署LNMP架构?_ ?

农鸿德
2024-07-01

我在rozkylinux9.4版本中用docker 做一个lnmp,但是期间一直出现很多的问题不知道从哪里下手,希望有大佬能抽点时间给我做一个详细的步骤,我是在培训机构学习的,这是我的考试题 就是第四道题,老师的要求是如图片所说,希望有哥能给我引导下,是分离部署的lnmp架构并且RR轮询老师的要求....,有大佬给我解答我加V出大洋请哥喝几瓶劲酒

我用pull所需要的容器但是里面的bash不支持很多的命令,而且文件的路径也和我之前所学习的路径有很多不一样的地方

然后我还用dockerfile也试试了,最后我访问回环地址报错404但是加上端口号就能出现nginx的welcome to nginx,换另外一个容器的端口号也是可以成功的,但只我不知道怎么排错,一片迷茫

[root@localhost ~]# ls /php/
check_db.php  Dockerfile  php-8.2.7.tar.gz
[root@localhost ~]# ls /root/mysql/
Dockerfile  mysql.sh
my.cnf      Percona-Server-8.0.32-24-Linux.x86_64.glibc2.34.tar.gz
[root@localhost ~]# ls /root/nginx
check_db.php  default.conf  Dockerfile  nginx-1.25.3.tar.gz

上面是我的各个容器的dockerfile的存放路径,尝试的结果就是如我所说报错404,我现在目前是认为链接上出现了问题导致不能连接php页面但是用dockerfile做的太头疼了,还是从网络找的步骤太。。。。一言难尽,向寻求大佬能用pull下来的镜像完成第四题,欢迎大佬来挑战,若能有大佬给我解答我加V出大洋请哥喝几瓶劲酒

共有1个答案

戈正初
2024-07-01

基于你的描述,你应该不用折腾dockerfile去构建镜像。

这里给你一个docker compose的方式。

version: '3'
services:
  db:
    image: mysql:5.7
    volumes:
      - db_data:/var/lib/mysql
    restart: always
    environment:
      MYSQL_ROOT_PASSWORD: somewordpress
      MYSQL_DATABASE: wordpress
      MYSQL_USER: wordpress
      MYSQL_PASSWORD: wordpress

  nginx:
    image: nginx:latest
    ports:
      - "80:80"
    volumes:
      - ./app:/usr/share/nginx/html
      - ./nginx.conf:/etc/nginx/nginx.conf
    restart: always

  php:
    image: php:7.4-fpm
    volumes:
      - ./app:/var/www/html
    restart: always

volumes:
  db_data:

这个docker-compose.yml文件中,定义了三个服务:db(MySQL)、nginx和php(PHP-FPM)。定义了一个卷db_data,用于存储MySQL的数据。

其中 ./app是指docker-compose.yml这个文件目录下的app文件夹,这是你Web应用程序目录,把你的php文件放这。

还要创建一个Nginx配置文件nginx.conf,配置Nginx代理请求到PHP-FPM服务:

worker_processes  1;

events {
    worker_connections  1024;
}

http {
    upstream php {
        server php:9000;
    }

    server {
        listen       80;
        server_name  localhost;

        location / {
            root   /usr/share/nginx/html;
            index  index.php index.html index.htm;
        }

        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   /usr/share/nginx/html;
        }

        # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
        #
        location ~ \.php$ {
            include       fastcgi_params;
            fastcgi_pass  php;
            fastcgi_index index.php;
            fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        }
    }
}

在你的docker-compose.yml文件目录执行这个命令启动服务,会自动解析docker-compose.yml文件,拉取镜像并启动容器,一步完成。

docker-compose up -d

不知道你是否熟悉docker-compose,每个参数跟你使用docker run 基本能对应上。你可以继续对照着使用docker run挨个创建容器也是一样的。这里为了更直观我用docker-compose.yml文件方式提供。

 类似资料:
  • 目前 AKShare 数据接口是基于 Python 开发的,鉴于部分其他语言的用户难以在短时间部署 AKShare 的 Python 使用环境,特此提供基于虚拟化容器技术 Docker 的使用教程。 安装 Docker 官方安装指导 Windows 10:安装教程 Mac:安装教程 Ubuntu:安装教程 CentOS:安装教程 第三方安装指导 Docker 安装教程 建议 Windows 7 和

  • 我用Docker(使用Laradock)创建了一个全新的数字海洋服务器,使我的Laravel网站运行良好。 现在,我想使用Deployer自动化部署。 我想我唯一的问题是我不能让Deployer运行

  • 有可能在Tomcat中部署一些java war或jar文件吗?我找了很多教程,我找到的唯一解决方案是将项目war文件复制到中。 我实际上使用了这个解决方案,但我想改进我的文档化。我的主要目标是当我用docker-comush运行我的两个映像(tomcat和db映像中的应用程序)时,我想使用tomcat中目标文件夹的本地war文件,当我在代码更改后再次构建war时,该更改将在不停止容器、删除和重建的

  • 我需要向容器中添加额外的主机。这是docker编写的文件 我在本地启动容器,并在应用程序中记录 /etc/hosts。如果我用启动容器,我可以看到额外的主机添加到 /etc/hosts 如果我启动容器通过

  • 准备使用容器技术部署php,redis环境 php镜像: php-7.4.3-fpm redis镜像: 6.2.14 php容器中发现运行php进程的是www-data用户, uid 33 , gid 33 redis容器中发现运行进程的是 redis 用户, uid 999, gid 999 想将php的error_log 和 slowlog 进行持久化到宿主机 /home/logs目录下, 即

  • 本文向大家介绍在Docker上部署Python的Flask框架的教程,包括了在Docker上部署Python的Flask框架的教程的使用技巧和注意事项,需要的朋友参考一下 本文中,我将尝试展示用Docker开发python应用(主要是Web应用)的可行方法。虽然我本人专注于Python的Flask微框架,但本文目的是演示如何通过Docker更好地开发和共享应用程序,(由任何语言和框架开发的应用程序

  • 我们可以在单独的docker容器中部署apache和php,然后将它们链接起来。 但是有没有办法在docker容器中本地安装apache(使用apt get install apache2)和php fpm,然后链接它们? 谢谢

  • 问题内容: 我正在尝试部署使用docker-compose构建的应用程序,但是感觉好像我朝着完全错误的方向前进。 我的一切工作都在本地进行-通过适当的网络和主机启动我的应用程序。 我希望能够在生产机器上运行容器和网络的相同配置,而只是使用不同的文件。 我当前的工作流程如下所示: 在这一点上,我希望当它们到达那里时能够再次运行,但这试图根据文件重建容器。 我有一种明显的失落感。我是否应该通过完整的应