Skip to content

快速参考

  • 由……维护: (注:原文中“Maintained by:”后面应该会有具体的维护者信息,若有完整内容,翻译会更加准确。这里仅根据给定的部分进行了翻译。)
    莫妮卡团队

  • 哪里可以获得帮助:
    Docker 社区 Slack、Server Fault、Unix & Linux 或 Stack Overflow

支持的标签及各自的 Dockerfile 链接

快速参考(续)

莫妮卡是什么?

莫妮卡是一个很棒的开源个人关系管理系统,用于组织与您所爱之人的互动。

logo

如何使用此图像

您可以从两个版本的图像中进行选择。

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 变量传入值。

  1. 创建一个 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
    
  2. 在运行此安装程序之前,为 APP_KEY 变量设置一个值。该值应为一个随机的 32 字符字符串。例如,您可以复制并粘贴 echo -n 'base64:'; openssl rand -base64 32 的输出:

  3. 跑;运行;经营(具体含义需根据上下文确定)

    docker-compose up -d
    

    等待所有迁移完成,然后从您的主机系统通过 http://localhost:8080/ 访问 Monica。如果看起来没问题,添加您的第一个用户帐户。

  4. 运行此命令一次:

    docker-compose exec app php artisan setup:production
    

FPM 版本

使用 FPM 镜像时,您将需要另一个带有网络服务器的容器来代理 HTTP 请求。在本示例中,我们使用带有基本容器的 Nginx 来完成此操作。

  1. 下载用于 nginx 镜像的 nginx.confDockerfile 文件。在 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/Dockerfile
    

    web 容器映像应在每次部署前使用: docker-compose build 进行预构建。

  2. 创建一个 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
    
  3. 在运行此安装程序之前,为 APP_KEY 变量设置一个值。该值应为一个随机的 32 字符字符串。例如,您可以复制并粘贴 echo -n 'base64:'; openssl rand -base64 32 的输出:

  4. 跑;运行;经营(具体含义需根据上下文确定) ,题目中仅给出“Run”,这个词有多种含义,以上是常见的几种翻译。如果您能提供更多上下文信息,我将能给出更准确的翻译。按照题目要求,直接输出翻译,此处为:跑;运行;经营

    docker-compose up -d
    

    等待所有迁移完成,然后从您的主机系统通过 http://localhost:8080/ 访问 Monica。如果看起来没问题,添加您的第一个用户帐户。

  5. 运行此命令一次:

    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 的镜像中通常不会包含其他相关工具(例如 gitbash )。以该镜像为基础,在您自己的 Dockerfile 中添加您需要的内容(如果您不熟悉如何安装软件包,请参阅 alpine 镜像说明中的示例)。

许可证

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

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

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

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