Docker 是一种流行的容器化技术,可以简化应用程序的部署和管理。使用 Docker 部署 CodeIgniter 框架应用程序将为开发者提供更高的灵活性和可维护性。本文将详细介绍如何使用 Docker 部署一个简单的 CodeIgniter 应用。
环境准备
在开始之前,请确保你的开发环境中已安装 Docker 和 Docker Compose。你可以通过以下命令检查它们的安装情况:
docker --version
docker-compose --version
安装 Docker
如果尚未安装 Docker,你可以访问官方网站(Docker Get Started)下载并安装适合你操作系统的版本。
准备 CodeIgniter 项目
在项目开始之前,你需要下载或创建一个 CodeIgniter 应用。你可以从 CodeIgniter 的官方网站获取最新版本,并解压到你的工作目录中。
curl -LO https://github.com/bcit-ci/CodeIgniter/archive/refs/tags/3.1.11.zip
unzip 3.1.11.zip
mv CodeIgniter-3.1.11 my_codeigniter_app
cd my_codeigniter_app
创建 Dockerfile
接下来,我们需要创建一个 Dockerfile 来定义应用程序的容器。这是一份示例 Dockerfile,用于构建 CodeIgniter 应用。
# Dockerfile
# 使用 PHP 基础镜像
FROM php:7.4-apache
# 设置工作目录
WORKDIR /var/www/html
# 将当前目录中的文件复制到容器中
COPY . .
# 安装必要的 PHP 扩展
RUN docker-php-ext-install mysqli
解释 Dockerfile
在上面的 Dockerfile 中,我们使用 PHP 7.4 和 Apache 的基础镜像。然后,我们设置工作目录为 `/var/www/html`,并将当前目录的内容复制到此目录中。此外,我们安装了 `mysqli` 扩展,以便 CodeIgniter 可以使用 MySQL 数据库。
创建 docker-compose.yml 文件
接下来,我们将使用 Docker Compose 来简化多容器的管理。创建一个 `docker-compose.yml` 文件,内容如下:
version: '3.7'
services:
app:
build: .
ports:
- "8080:80"
volumes:
- .:/var/www/html
environment:
- CI_ENVIRONMENT=development
db:
image: mysql:5.7
ports:
- "3306:3306"
environment:
MYSQL_ROOT_PASSWORD: root
MYSQL_DATABASE: codeigniter
MYSQL_USER: user
MYSQL_PASSWORD: password
解释 Docker Compose 文件
在这个 `docker-compose.yml` 文件中,我们定义了两个服务:`app` 和 `db`。`app` 服务基于我们之前创建的 Dockerfile,并将其端口映射到主机的8080端口。`db` 服务使用 MySQL 5.7 镜像,并设置了一些环境变量来配置数据库。
构建和运行应用
现在,我们可以构建并运行应用程序了。打开终端,导航到项目目录,并执行以下命令:
docker-compose up --build
执行此命令后,Docker 将开始构建并拉取所需的镜像。完成后,你应该可以通过浏览器访问 http://localhost:8080 来查看你的 CodeIgniter 应用程序。
访问数据库
为了让 CodeIgniter 应用与 MySQL 数据库正常连接,你需要在 `application/config/database.php` 文件中设置数据库配置。替换为以下内容:
\$db['default'] = array(
'dsn' => '',
'hostname' => 'db',
'username' => 'user',
'password' => 'password',
'database' => 'codeigniter',
'dbdriver' => 'mysqli',
'dbprefix' => '',
'pconnect' => FALSE,
'db_debug' => (ENVIRONMENT !== 'production'),
'cache_on' => FALSE,
'cachedir' => '',
'char_set' => 'utf8',
'dbcollat' => 'utf8_general_ci',
'swap_pre' => '',
'encrypt' => FALSE,
'compress' => FALSE,
'strict' => FALSE,
'failover' => array(),
'save_queries' => TRUE
);
总结
通过以上步骤,你成功地在 Docker 环境中部署了一个 CodeIgniter 应用程序。使用 Docker 和 Docker Compose,你可以轻松管理应用程序和数据库的服务。对于生产环境,建议根据具体需求做进一步的优化和安全配置。