> ## Content Index
> Fetch the complete content index at: https://isoziyuan.com/llms.txt
> Use this file to discover other available public pages before exploring further.

# 使用docker-compose构建包含MySQL和PHP 8.0的Web应用程序
- URL: https://isoziyuan.com/p/100063/
- Published: 2023-03-16T05:08:32.000Z
- Updated: 2023-03-16T05:08:32.000Z
- Author: 9253462
- Tags: Docker, old-wordpress-import, #wp, #wp-post, #Import 2026-09-04 23:28

在您的项目目录中创建一个名为`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扩展程序。