Skip to content

快速参考

  • 维护者:
    Joomla!

  • 获取帮助的途径:
    Docker 社区 Slack、Server Fault、Unix & Linux 或 Stack Overflow

支持的标签和相应的 Dockerfile 链接

快速参考(续)

什么是 Joomla?

Joomla 是一个用于发布网络内容的免费开源内容管理系统 (CMS)。它构建在模型-视图-控制器 Web 应用程序框架之上,可独立于 CMS 使用。Joomla 是用 PHP 编写的,使用面向对象编程 (OOP) 技术和软件设计模式,将数据存储在 MySQL、MS SQL 或 PostgreSQL 数据库中,并包括页面缓存、RSS 提要、页面可打印版本、新闻快讯、博客、搜索和语言国际化支持等功能。

wikipedia.org/wiki/Joomla

logo

如何使用此图像

$ docker run --name some-joomla --network some-network -d joomla

以下环境变量可用于配置您的 Joomla 实例:

  • -e JOOMLA_DB_HOST=... (默认为链接的 mysql 容器的 IP 和端口)
  • -e JOOMLA_DB_USER=... (默认为“root”)
  • -e JOOMLA_DB_PASSWORD=... (默认为链接的 mysql 容器中的 MYSQL_ROOT_PASSWORD 环境变量的值)
  • -e JOOMLA_DB_PASSWORD_FILE=... (包含数据库密码的文件路径)
  • -e JOOMLA_DB_NAME=... (默认为“joomla”)
  • -e JOOMLA_DB_TYPE=... (默认为“mysqli”选项:mysqli,pgsql)

如果给定的 MySQL 服务器上尚未存在指定的 JOOMLA_DB_NAME ,则在启动 joomla 容器时将自动创建它,前提是指定的 JOOMLA_DB_USER 具有创建它所需的权限。

以下环境变量也可用于为您的 Joomla 实例配置自动部署(跳过浏览器设置):

  • -e JOOMLA_SITE_NAME=... (Joomla 站点名称)
  • -e JOOMLA_ADMIN_USER=... (Joomla 管理员的全名)
  • -e JOOMLA_ADMIN_USERNAME=... (Joomla 管理员的用户名)
  • -e JOOMLA_ADMIN_PASSWORD=... (Joomla 管理员密码)
  • -e JOOMLA_ADMIN_EMAIL=... (Joomla 管理员的电子邮件地址)
  • -e JOOMLA_EXTENSIONS_URLS=... (以分号分隔的要从中安装 Joomla 扩展的 URL 列表)
  • -e JOOMLA_EXTENSIONS_PATHS=... (以分号分隔的文件路径列表,用于从其中安装 Joomla 扩展)
  • -e JOOMLA_SMTP_HOST=... (用于外发电子邮件的 SMTP 主机)
  • -e JOOMLA_SMTP_HOST_PORT=... (用于外发电子邮件的 SMTP 端口)

如果您希望能够从主机访问实例而无需容器的 IP,则可以使用标准端口映射:

$ docker run --name some-joomla --network some-network -p 8080:80 -d joomla

然后,在浏览器中通过 http://localhost:8080http://host-ip:8080 访问它。

如果您想使用外部数据库而不是 MySQL 容器,请使用 JOOMLA_DB_HOST 指定主机名和端口,同时在 JOOMLA_DB_PASSWORD 中指定密码,在 JOOMLA_DB_USER 中指定用户名(如果不是 root ):

$ docker run --name some-joomla --network some-network -e JOOMLA_DB_HOST=10.1.2.3:3306 \
    -e JOOMLA_DB_USER=... -e JOOMLA_DB_PASSWORD=... -d joomla

...通过 docker-composedocker stack deploy

示例 docker-compose.yml 用于 joomla

services:

  joomla:
    image: joomla
    restart: always
    ports:
      - 8080:80
    environment:
      JOOMLA_DB_HOST: db
      JOOMLA_DB_USER: joomla
      JOOMLA_DB_PASSWORD: examplepass
      JOOMLA_DB_NAME: joomla_db
      JOOMLA_SITE_NAME: Joomla
      JOOMLA_ADMIN_USER: Joomla Hero
      JOOMLA_ADMIN_USERNAME: joomla
      JOOMLA_ADMIN_PASSWORD: joomla@secured
      JOOMLA_ADMIN_EMAIL: joomla@example.com
    volumes:
      - joomla_data:/var/www/html
    networks:
      - joomla_network

  db:
    image: mysql:8.0
    restart: always
    environment:
      MYSQL_DATABASE: joomla_db
      MYSQL_USER: joomla
      MYSQL_PASSWORD: examplepass
      MYSQL_RANDOM_ROOT_PASSWORD: '1'
    volumes:
      - db_data:/var/lib/mysql
    networks:
      - joomla_network

volumes:
  joomla_data:
  db_data:

networks:
  joomla_network:

Try in PWD

运行 docker stack deploy -c stack.yml joomla (或 docker-compose -f stack.yml up ),等待其完全初始化,然后访问 http://swarm-ip:8080http://localhost:8080http://host-ip:8080 (视情况而定)。

添加额外的库/扩展

该映像不提供任何其他 PHP 扩展或其他库,即使流行的插件需要它们。可能的插件数量是无限的,它们可能需要 PHP 支持的任何扩展。包括所有存在的 PHP 扩展将大大增加映像大小。

如果您需要其他 PHP 扩展,您需要创建自己的映像 FROM 这个。 php 映像的文档说明了如何编译其他扩展。此外, joomla Dockerfile 中有一个这样做的示例。

以下 Docker Hub 功能可以帮助您完成保持依赖镜像最新的任务:

  • 自动化构建允许 Docker Hub 在每次推送更改到 Dockerfile 时自动构建它。

图像变体

joomla 图像有多种类型,每种都针对特定的用例进行了设计。

joomla:<version>

这是默认的镜像。如果您不确定自己的需求是什么,您可能想要使用这个。它被设计为既可以用作一次性容器(挂载您的源代码并启动容器以启动您的应用程序),也可以用作构建其他镜像的基础。

joomla:<version>-alpine

该镜像基于流行的 Alpine Linux 项目,可在 alpine 官方镜像中使用。Alpine Linux 比大多数发行版基础镜像(约 5MB)小得多,因此通常会生成更精简的镜像。

当您主要关注最终图像大小尽可能小时,此变体很有用。需要注意的主要警告是,它确实使用 musl libc 而不是 glibc 等,因此软件通常会根据其 libc 要求/假设的深度遇到问题。有关可能出现的问题以及使用基于 Alpine 的映像的一些优缺点比较的更多讨论,请参阅此 Hacker News 评论线程。

为了最小化镜像大小,在基于 Alpine 的镜像中包含额外的相关工具(如 gitbash )是不常见的。使用此镜像作为基础,在您自己的 Dockerfile 中添加您需要的东西(如果您不熟悉如何安装软件包,请参阅 alpine 镜像描述中的示例)。

许可证

查看此映像中包含的软件的许可证信息。

与所有 Docker 镜像一样,这些镜像可能还包含其他软件,这些软件可能受其他许可证的约束(例如来自基础发行版的 Bash 等,以及所包含的主要软件的任何直接或间接依赖项)。

一些能够自动检测到的额外许可证信息可能会在 repo-info 存储库的 joomla/ 目录中找到。

对于任何预构建的映像使用,映像用户有责任确保对此映像的任何使用都符合其中包含的所有软件的任何相关许可证。