You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Docker Compose文件中集成Smarty模板引擎?

解决方案:在可移植Docker容器中安装Smarty模板工具

你的需求是打造可移植的容器,直接在Compose文件里没法完全实现,因为php:apache官方镜像默认不带Composer,得通过自定义镜像来打包Smarty依赖,这样容器迁移时无需重复配置。以下是具体步骤:

1. 创建自定义Dockerfile

在你的docker-compose.yml同级目录下新建Dockerfile,内容如下:

FROM php:apache

# 从官方Composer镜像复制可执行文件到当前镜像
COPY --from=composer:latest /usr/bin/composer /usr/bin/composer

# 设置工作目录为Apache根目录
WORKDIR /var/www/html

# 安装Smarty依赖
RUN composer require smarty/smarty

2. 修改docker-compose.yml配置

将原配置中的image: php:apache替换为build: .,让Compose基于当前目录的Dockerfile构建镜像:

version: "3"
services:
  webserver:
    build: .
    ports:
      - 32001:80
    volumes:
      - volHTML:/var/www/html
    restart: always
volumes:
  volHTML:
    driver: local
    driver_opts:
      type: cifs
      device: ${htmlpath}
      o: username=${uid},password=${pwd},uid=1000,gid=1000
networks: {}

3. 构建并启动容器

在终端执行以下命令:

# 构建包含Smarty的自定义镜像
docker-compose build

# 启动容器
docker-compose up -d

关键说明

  • 自定义镜像会把Composer和Smarty都打包进去,迁移时只需将Dockerfile、docker-compose.yml和环境变量文件(如果有)复制到目标机器,重新构建或直接复用镜像即可,完全满足可移植需求。
  • 若直接在运行的容器内执行composer require,容器重启后安装的依赖会丢失,且无法随容器镜像迁移,因此必须通过Dockerfile固化依赖。

内容的提问来源于stack exchange,提问作者PhilC

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.28 13:15:08