
在现代软件开发领域,容器化已成为高效部署和可扩展性的基石。 docker 可以轻松地将应用程序及其依赖项打包到可移植容器中。在本博客中,我们将引导您使用 docker compose 创建多容器 php 和 mysql 应用程序。
一致性:在开发和生产的所有阶段都在同一环境中运行您的应用程序。
隔离:将 php 和 mysql 等服务保存在单独的容器中,以实现模块化和可维护的设置。
易于扩展:随着应用程序的增长,轻松添加或删除容器。
您的项目目录应如下所示:
project/ │ ├── php-app/ │ ├── dockerfile │ └── index.php │ └── docker-compose.yml
这是 docker-compose.yml 文件:
version: '3.8'
services:
php-app:
build: ./php-app # builds the php app docker image from the ./php-app directory
ports:
- "8080:80" # maps port 8080 on the host to port 80 in the container
depends_on:
- mysql # ensures mysql starts before the php app
mysql:
image: mysql:8.0 # uses the official mysql image
ports:
- "3306:3306" # maps port 3306 on the host to port 3306 in the container
environment:
mysql_root_password: root # root password for mysql
mysql_database: mydb # initial database to create
volumes:
- mysql-data:/var/lib/mysql # persists mysql data in a named volume
volumes:
mysql-data: # declares a named volume for mysql data persistence
index.php 文件连接到 mysql 容器:
<?php
$servername = "mysql"; // service name defined in docker-compose.yml
$username = "root";
$password = "root";
$database = "mydb";
try {
// create connection
$conn = new pdo("mysql:host=$servername;dbname=$database", $username, $password);
// set pdo error mode to exception
$conn->setattribute(pdo::attr_errmode, pdo::errmode_exception);
echo "connected to mysql successfully!";
} catch (pdoexception $e) {
echo "connection failed: " . $e->getmessage();
}
?>
dockerfile 构建具有所需依赖项的 php 容器:
# use the official php image from php:8.2-apache # install pdo mysql extension run docker-php-ext-install pdo pdo_mysql # set the working directory workdir /var/www/html # copy the application code copy index.php . # expose port 80 expose 80
创建目录结构
构建并启动容器在项目目录中打开终端并运行:
docker-compose up --build
访问 php 应用程序 在浏览器中访问 http://localhost:8080。如果一切设置正确,您应该看到:
Connected to MySQL successfully!
使用 mysql 客户端或 mysql workbench。
使用以下命令连接到 localhost:3306:
用户名:root
密码:root
验证数据库 mydb 是否已创建。
服务依赖管理:depends_on 确保 mysql 在 php 应用程序之前启动。
数据持久化:mysql-data卷存储mysql数据,防止容器重启后丢失。
端口映射:通过映射到主机的端口轻松访问服务。
将更多服务(如 nginx 或 redis)添加到 compose 文件中。
使用 .env 文件来管理敏感配置。
使用 docker compose 的缩放选项来水平缩放服务。
通过此设置,您已经使用 docker compose 构建了一个可扩展的模块化 php 和 mysql 应用程序。容器化可简化环境管理并为您的应用程序云部署做好准备。无论您是初学者还是经验丰富的开发人员,docker 都是现代应用程序开发不可或缺的工具。
准备好将您的设置提升到新的水平了吗?尝试将其与 ci/cd 管道或 kubernetes 集成以实现生产级环境。
立即学习“PHP免费学习笔记(深入)”;
以上就是Dockerize 您的 PHP 和 MySQL 应用程序:多容器应用程序分步指南的详细内容,更多请关注php中文网其它相关文章!
PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号