附件

可以在单一主机、一组主机或特定角色上启动附件。无需在 Kamal 服务器配置中定义这些主机。

附件与主服务分开管理 - 部署时不会更新附件,而且它们不具有零停机时间部署。

运行 kamal accessory boot <accessory> 启动附件。有关更多信息,请参阅 kamal accessory --help

配置附件

首先在 accessories 中定义附件

accessories:
  mysql:

服务名称

这在服务标签中使用,其默认值为 <service>-<accessory>,其中 <service> 是来自根配置的主服务名称

    service: mysql

映像

要使用的 Docker 映像,如果不是使用 Docker 集线器,则在注册表前加上前缀

    image: mysql:8.0

附件主机

指定 hosthostsroles 之一

    host: mysql-db1
    hosts:
      - mysql-db1
      - mysql-db2
    roles:
      - mysql

自定义命令

如果不希望使用默认值,则可以设置要在容器中运行的自定义命令

    cmd: "bin/mysqld"

端口映射

请参见 https://docs.dockerd.com.cn/network/,特别是注意公开端口的安全影响警告。

    port: "127.0.0.1:3306:3306"

标签

    labels:
      app: myapp

选项

这些以 --<name> <value> 的形式传递给 Docker run 命令

    options:
      restart: always
      cpus: 2

环境变量

有关更多信息,请参阅 环境变量

    env:
      ...

复制文件

你可以指定要装载到容器中的文件。其格式为 local:remote,其中 local 是本地计算机上文件的路径,而 remote 是容器中文件的路径。

它们将从本地存储库上载到主机,然后进行装载。

ERB 文件将在复制之前得到评估。

    files:
      - config/my.cnf.erb:/etc/mysql/my.cnf
      - config/myoptions.cnf:/etc/mysql/myoptions.cnf

目录

你可以指定要装入容器中的目录。它们将在装载之前在主机上创建

    directories:
      - mysql-logs:/var/log/mysql

除了文件和目录 以外,不需要创建或复制的任何其他要挂载的卷

    volumes:
      - /path/to/mysql-logs:/var/log/mysql