使用docker-compose构建包含MySQL和PHP 8.0的Web应用程序

在您的项目目录中创建一个名为docker-compose.yml的文件,并将以下内容复制粘贴到文件中:

version: '3.9'
services:
  web:
    image: php:8.0-fpm
    volumes:
      - ./my-web-app:/var/www/html
    ports:
      - "80:80"
    depends_on:
      - db
  db:
    image: mysql:8.0
    environment:
      MYSQL_ROOT_PASSWORD: my-secret-pw
      MYSQL_DATABASE: my_web_app_db
      MYSQL_USER: my_web_app_user
      MYSQL_PASSWORD: my-secret-password
    ports:
      - "3306:3306"
    volumes:
      - db-data:/var/lib/mysql
volumes:
  db-data:

该文件定义了两个服务:一个名为web的PHP 8.0 FPM服务和一个名为db的MySQL 8.0服务。 web服务使用php:8.0-fpm镜像并将./my-web-app目录挂载到容器的/var/www/html目录。它还将容器的80端口映射到主机的80端口。db服务使用mysql:8.0镜像,设置了MySQL的root密码和应用程序数据库的用户名密码,并将容器的3306端口映射到主机的3306端口。此外,我们将db-data命名的卷用于存储MySQL数据。

在与docker-compose.yml文件相同的目录中创建一个名为my-web-app的目录,并在该目录中创建一个名为index.php的文件,其中包含Web应用程序的代码,例如:

<?php
  $dbhost = "db";
  $dbuser = "my_web_app_user";
  $dbpass = "my-secret-password";
  $dbname = "my_web_app_db";
  $conn = mysqli_connect($dbhost, $dbuser, $dbpass, $dbname);
  if (!$conn) {
    die("Connection failed: " . mysqli_connect_error());
  }
  echo "Connected successfully to MySQL database!";
?>

此PHP代码将连接到MySQL数据库并输出“Connected successfully to MySQL database!”消息。

使用以下命令启动Web应用程序容器:

docker-compose up -d

该命令将在后台启动两个服务,并将容器日志输出到终端。

在Web浏览器中输入服务器的IP地址或域名,例如:http://your_server_ip_address,以查看Web应用程序的运行状态。

如果一切正常,您应该可以看到“Connected successfully to MySQL database!”消息。要停止并删除容器和数据卷,请使用以下命令:

docker-compose down --volumes

请注意,这只是一个基本示例,您可以根据需要进行修改和扩展。例如,您可以在docker-compose.yml文件中添加其他服务,如缓存服务或Web服务器。您还可以在web服务中添加其他PHP扩展程序。

© 版权声明
THE END
喜欢就支持一下吧
点赞15 分享
评论 抢沙发
头像
欢迎您留下宝贵的见解!
提交
头像

昵称

取消
昵称表情代码图片

    暂无评论内容