快速参考
-
由……维护: (注:原文中“Maintained by:”后面应该会有具体的维护者信息,若有完整内容,翻译会更加准确。这里仅根据给定的部分进行了翻译。)
莫妮卡团队 -
哪里可以获得帮助:
Docker 社区 Slack、Server Fault、Unix & Linux 或 Stack Overflow
支持的标签及各自的 Dockerfile 链接
-
4.1.2-apache,4.1-apache,4-apache,apache,4.1.2,4.1,4,latest -
5.0.0-beta.4-fpm-alpine,5.0.0-beta-fpm-alpine,5.0-fpm-alpine
快速参考(续)
-
支持的架构:(更多信息)
amd64,arm32v5,arm32v6,arm32v7,arm64v8,i386,mips64le,ppc64le,s390x -
已发布的图像伪影细节:
repo-info repo 的repos/monica/目录(历史记录)
(图像元数据、传输大小等) -
图像更新:
官方图像仓库的library/monica标签
官方图像存储库的library/monica文件(历史记录) -
此描述的来源:
文档库的monica/目录(历史记录)
莫妮卡是什么?
莫妮卡是一个很棒的开源个人关系管理系统,用于组织与您所爱之人的互动。
如何使用此图像
您可以从两个版本的图像中进行选择。
apache 标签包含一个带有 apache 网络服务器的完整 Monica 安装。这也指向默认的 latest 标签。
fpm 标签包含一个用于服务网页的 fastCGI 进程。此图像应与用作代理的网络服务器(如 apache 或 nginx)结合使用。
使用 apache 图像
此图像包含一个暴露 80 端口的网络服务器。使用以下命令运行容器:
docker run --name some-monica -d -p 8080:80 monica
使用 fpm 镜像
此图像为暴露端口 9000 的 fastCGI 服务器提供服务。您可能需要一个额外的 Web 服务器,该服务器可以将请求代理到容器的 fpm 端口 9000。使用以下命令运行此容器:
docker run --name some-monica -d -p 9000:9000 monica:fpm
使用外部数据库
您需要设置一个外部数据库。Monica 目前支持 MySQL/MariaDB 数据库。您还可以链接一个数据库容器,例如 --link my-mysql:db ,然后在设置时将 db 用作数据库主机。更多信息在 docker-compose 部分。
持久数据存储
为了使您的数据有持久存储,您可能想要为您的数据库创建卷,而对于 monica,您必须保存 /var/www/html/storage 目录。
使用此命名卷运行一个容器:
docker run -d \
-v monica_data:/var/www/html/storage \
monica
在容器内运行命令
像每个 Laravel 应用程序一样, php artisan 命令对 Monica 非常有用。要在容器内运行命令,请运行
docker exec CONTAINER_ID php artisan COMMAND
或用于 docker-compose
docker-compose exec monica php artisan COMMAND
其中 monica 是您的 docker-compose.yml 文件中服务的名称。
使用环境变量进行配置
莫妮卡图像将使用环境变量来设置应用程序。有关您应设置的常用变量,请参阅莫妮卡文档。
使用 docker-compose 运行该镜像
在示例部分查看一些 docker-compose 可能性的示例。
阿帕奇版本
此版本将使用 apache 镜像并添加一个 mysql 容器。卷设置为保持您的数据持久性。此设置未提供 ssl 加密,旨在在代理后面运行。
在运行此设置之前,请确保为 APP_KEY 变量传入值。
-
创建一个
docker-compose.yml文件version: "3.9" services: app: image: monica depends_on: - db ports: - 8080:80 environment: - APP_KEY= # Generate with `echo -n 'base64:'; openssl rand -base64 32` - DB_HOST=db - DB_USERNAME=monica - DB_PASSWORD=secret volumes: - data:/var/www/html/storage restart: always db: image: mariadb:11 environment: - MYSQL_RANDOM_ROOT_PASSWORD=true - MYSQL_DATABASE=monica - MYSQL_USER=monica - MYSQL_PASSWORD=secret volumes: - mysql:/var/lib/mysql restart: always volumes: data: name: data mysql: name: mysql -
在运行此安装程序之前,为
APP_KEY变量设置一个值。该值应为一个随机的 32 字符字符串。例如,您可以复制并粘贴echo -n 'base64:'; openssl rand -base64 32的输出: -
跑;运行;经营(具体含义需根据上下文确定)
docker-compose up -d等待所有迁移完成,然后从您的主机系统通过 http://localhost:8080/ 访问 Monica。如果看起来没问题,添加您的第一个用户帐户。
-
运行此命令一次:
docker-compose exec app php artisan setup:production
FPM 版本
使用 FPM 镜像时,您将需要另一个带有网络服务器的容器来代理 HTTP 请求。在本示例中,我们使用带有基本容器的 Nginx 来完成此操作。
-
下载用于 nginx 镜像的
nginx.conf和Dockerfile文件。在example section上可以找到一个示例。mkdir web curl -sSL https://raw.githubusercontent.com/monicahq/docker/main/.examples/full/web/nginx.conf -o web/nginx.conf curl -sSL https://raw.githubusercontent.com/monicahq/docker/main/.examples/full/web/Dockerfile -o web/Dockerfileweb容器映像应在每次部署前使用:docker-compose build进行预构建。 -
创建一个
docker-compose.yml文件version: "3.9" services: app: image: monica:fpm depends_on: - db environment: - APP_KEY= # Generate with `echo -n 'base64:'; openssl rand -base64 32` - DB_HOST=db - DB_USERNAME=monica - DB_PASSWORD=secret volumes: - data:/var/www/html/storage restart: always web: build: ./web ports: - 8080:80 depends_on: - app volumes: - data:/var/www/html/storage:ro restart: always db: image: mariadb:11 environment: - MYSQL_RANDOM_ROOT_PASSWORD=true - MYSQL_DATABASE=monica - MYSQL_USER=monica - MYSQL_PASSWORD=secret volumes: - mysql:/var/lib/mysql restart: always volumes: data: name: data mysql: name: mysql -
在运行此安装程序之前,为
APP_KEY变量设置一个值。该值应为一个随机的 32 字符字符串。例如,您可以复制并粘贴echo -n 'base64:'; openssl rand -base64 32的输出: -
跑;运行;经营(具体含义需根据上下文确定) ,题目中仅给出“Run”,这个词有多种含义,以上是常见的几种翻译。如果您能提供更多上下文信息,我将能给出更准确的翻译。按照题目要求,直接输出翻译,此处为:跑;运行;经营
docker-compose up -d等待所有迁移完成,然后从您的主机系统通过 http://localhost:8080/ 访问 Monica。如果看起来没问题,添加您的第一个用户帐户。
-
运行此命令一次:
docker-compose exec app php artisan setup:production
使莫妮卡可从互联网获取
要将您的 Monica 实例暴露在互联网上,设置环境变量 APP_ENV=production 很重要。在这种情况下, https 模式将是强制性的。
在主机上使用代理网络服务器
将您的 Monica 实例公开的一种方法是使用具有 SSL 功能的主机上的代理网络服务器。通过反向代理可以实现这一点。
使用代理网络服务器容器
在示例部分查看一些 docker-compose 可能性的示例,以展示如何使用具有 ssl 功能的代理网络服务器。
图像变体
monica 图像有多种类型,每种都针对特定的用例而设计。
monica:<version>
这是事实上的映像。如果您不确定自己的需求是什么,您可能想要使用这个。它被设计为既可以用作一次性容器(挂载您的源代码并启动容器以启动您的应用程序),也可以作为构建其他映像的基础。
monica:<version>-alpine
此图像基于流行的 Alpine Linux 项目,可在 alpine 官方镜像中获取。Alpine Linux 比大多数发行版基础镜像(约 5MB)小得多,因此总体上会生成更精简的镜像。
当您首要关注的是最终图像大小尽可能小的时候,此变体是有用的。需要注意的主要警告是,它确实使用 musl libc 而不是 glibc 及相关库,因此软件往往会根据其对 libc 要求/假设的深度而遇到问题。有关可能出现的问题以及使用基于 Alpine 的图像的一些利弊比较的更多讨论,请参阅此 Hacker News 评论线程。
为尽量减小镜像大小,在基于 Alpine 的镜像中通常不会包含其他相关工具(例如 git 或 bash )。以该镜像为基础,在您自己的 Dockerfile 中添加您需要的内容(如果您不熟悉如何安装软件包,请参阅 alpine 镜像说明中的示例)。
许可证
查看此映像中所包含软件的许可证信息。
与所有 Docker 镜像一样,这些镜像可能还包含其他可能受其他许可证约束的软件(例如来自基础发行版的 Bash 等,以及所包含的主要软件的任何直接或间接依赖项)。
一些能够自动检测到的额外许可信息可能会在 repo-info 存储库的 monica/ 目录中找到。
对于任何预构建图像的使用,图像用户有责任确保对此图像的任何使用都符合其中包含的所有软件的任何相关许可。