附件
可以在单一主机、一组主机或特定角色上启动附件。无需在 Kamal 服务器配置中定义这些主机。
附件与主服务分开管理 - 部署时不会更新附件,而且它们不具有零停机时间部署。
运行 kamal accessory boot <accessory>
启动附件。有关更多信息,请参阅 kamal accessory --help
。
配置附件
首先在 accessories
中定义附件
accessories:
mysql:
服务名称
这在服务标签中使用,其默认值为 <service>-<accessory>
,其中 <service>
是来自根配置的主服务名称
service: mysql
映像
要使用的 Docker 映像,如果不是使用 Docker 集线器,则在注册表前加上前缀
image: mysql:8.0
附件主机
指定 host
、hosts
或 roles
之一
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