Docker 部署 CodeIgniter 框架应用的详细指导

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,你可以轻松管理应用程序和数据库的服务。对于生产环境,建议根据具体需求做进一步的优化和安全配置。

后端开发标签