Docker 是一个开源的应用容器引擎,可以让开发者打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口。
本章将详细介绍如何使用 Docker 来部署 PHP 应用程序,包括安装 Docker、创建 Dockerfile、构建 Docker 镜像、运行和管理容器等内容。
安装 Docker
在 Ubuntu 上安装 Docker
sudo apt-get update sudo apt-get install -y docker.io
在 CentOS 上安装 Docker
sudo yum install -y yum-utils sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo sudo yum install -y docker-ce docker-ce-cli containerd.io
启动 Docker 服务
sudo systemctl start docker sudo systemctl enable docker
验证 Docker 安装
docker --version
输出类似如下:
Docker version 20.10.7, build f0df350
创建 Dockerfile
Dockerfile 是一个文本文件,其中包含了一系列命令,用户可以调用 Docker CLI 来创建一个镜像。Dockerfile 文件通常命名为 Dockerfile,且位于项目的根目录。
示例 Dockerfile
// www.javascriptcn.com code example
# 使用官方的 PHP 镜像作为基础镜像
FROM php:7.4-fpm
# 设置工作目录
WORKDIR /var/www/html
# 安装必要的扩展
RUN apt-get update && apt-get install -y \
libzip-dev \
zip \
&& docker-php-ext-install zip pdo pdo_mysql
# 将当前目录下的所有文件复制到容器的工作目录中
COPY . .
# 暴露端口
EXPOSE 9000
# 启动 PHP-FPM 服务
CMD ["php-fpm"]构建 Docker 镜像
在项目根目录下执行以下命令来构建 Docker 镜像:
docker build -t my-php-app .
这里 -t 参数用于指定镜像的名称,my-php-app 是自定义的镜像名称。. 表示 Dockerfile 所在的当前目录。
运行和管理容器
运行容器
docker run -d -p 9000:9000 --name my-running-app my-php-app
这里 -d 表示后台运行容器,-p 参数用于映射主机和容器的端口,--name 参数用于指定容器的名字,my-php-app 是之前构建的镜像名称。
查看正在运行的容器
docker ps
查看所有容器(包括已停止的)
docker ps -a
停止和启动容器
停止容器:
docker stop my-running-app
启动容器:
docker start my-running-app
查看容器日志
docker logs my-running-app
进入容器内部
docker exec -it my-running-app bash
以上就是使用 Docker 部署 PHP 应用的基本流程。通过 Docker,我们可以轻松地将 PHP 应用部署到任何支持 Docker 的环境中,确保环境的一致性,并简化部署过程。