在项目目录创建或修改 .env:
# OCI API 账号
OCI_USER_ID=ocid1.user.oc1..example
OCI_TENANCY_ID=ocid1.tenancy.oc1..example
OCI_FINGERPRINT=11:22:33:44:55:66:77:88
OCI_REGION=ap-tokyo-1
# 本地直接运行时使用;Compose 会覆盖为 /run/secrets/oci_api_key.pem
OCI_KEY_FILE=./app/oci_api_key.pem
# OCI_KEY_PASSPHRASE=私钥密码
# 实例配置
OCI_AD=xxxx:AP-TOKYO-1-AD-1
OCI_SHAPE=VM.Standard.A1.Flex
OCI_OCPUS=2
OCI_MEMORY_IN_GB=12
OCI_BOOT_VOLUME_SIZE_IN_GBS=50
OCI_SUBNET_ID=ocid1.subnet.oc1.ap-tokyo-1.example
OCI_IMAGE_ID=ocid1.image.oc1.ap-tokyo-1.example
OCI_SSH_PUBLIC_KEY="ssh-rsa AAAAB3Nza... user@example"
# IPv6,可选;留空或删除即不请求 IPv6 地址
OCI_IPV6_SUBNET_CIDR=2603:c021:8000:e8ae:0000:0000:0000:0000/64
# 每轮基础等待时间,实际等待范围为 88-92 秒
RETRY_INTERVAL=90
# Telegram,可选
TELEGRAM_BOT_TOKEN=123456789:example-token
TELEGRAM_CHAT_ID=123456789
# 代理,可选
# HTTPS_PROXY=http://host.docker.internal:7890
# HTTP_PROXY=http://host.docker.internal:7890
含空格的值必须加引号,尤其是 OCI_SSH_PUBLIC_KEY。否则执行 source .env 时,Shell 会把公钥后半部分当成命令。
| 参数 | 必填 | 默认值 | 说明 |
|---|---|---|---|
OCI_USER_ID | 是 | 无 | OCI 用户 OCID |
OCI_TENANCY_ID | 是 | 无 | OCI 租户 OCID,同时用作实例 Compartment OCID |
OCI_FINGERPRINT | 是 | 无 | OCI API Key 指纹 |
OCI_REGION | 是 | 无 | OCI 区域,例如 ap-tokyo-1 |
OCI_KEY_FILE | 是 | 无 | OCI API 私钥路径;Compose 会覆盖容器内路径 |
OCI_KEY_PASSPHRASE | 否 | 空 | 私钥密码 |
OCI_AD | 否 | 空 | 指定可用区;为空时轮询当前区域的全部 AD |
OCI_SHAPE | 否 | VM.Standard.A1.Flex | OCI 实例规格 |
OCI_OCPUS | 否 | 2 | OCPU 数量 |
OCI_MEMORY_IN_GB | 否 | 12 | 内存大小,单位 GiB |
OCI_BOOT_VOLUME_SIZE_IN_GBS | 否 | 50 | 启动盘大小,单位 GB |
OCI_SUBNET_ID | 是 | 无 | VNIC 所属子网 OCID |
OCI_IMAGE_ID | 是 | 无 | 系统镜像 OCID |
OCI_SSH_PUBLIC_KEY | 是 | 无 | 写入实例的 SSH 公钥,含空格时必须加引号 |
OCI_IPV6_SUBNET_CIDR | 否 | 空 | IPv6 子网 CIDR;配置后请求 IPv6 地址 |
RETRY_INTERVAL | 否 | 90 | 每轮基础等待秒数,实际随机范围为该值 ±2 秒 |
TELEGRAM_BOT_TOKEN | 否 | 空 | Telegram Bot Token |
TELEGRAM_CHAT_ID | 否 | 空 | Telegram 接收方 Chat ID |
HTTPS_PROXY | 否 | 空 | HTTPS 代理地址,Telegram 和支持标准代理变量的请求使用 |
HTTP_PROXY | 否 | 空 | HTTP 代理地址 |
https_proxy | 否 | 空 | HTTPS_PROXY 的小写形式 |
http_proxy | 否 | 空 | HTTP_PROXY 的小写形式 |
只有同时配置 TELEGRAM_BOT_TOKEN 和 TELEGRAM_CHAT_ID 才会发送 Telegram 通知。
遇到 OCI 429 TooManyRequests 时,可先提高 RETRY_INTERVAL,例如设置为 120 或 180。
使用已发布镜像时,可使用以下 docker-compose.yaml:
services:
oracle-arm-claimer:
image: wlkc/oracle-claimer
container_name: oracle-arm-claimer
env_file:
- .env
environment:
OCI_KEY_FILE: /run/secrets/oci_api_key.pem
volumes:
- ./app/oci_api_key.pem:/run/secrets/oci_api_key.pem:ro
restart: unless-stopped
stop_grace_period: 30s
Create or update .env in the project directory:
# OCI API account
OCI_USER_ID=ocid1.user.oc1..example
OCI_TENANCY_ID=ocid1.tenancy.oc1..example
OCI_FINGERPRINT=11:22:33:44:55:66:77:88
OCI_REGION=ap-tokyo-1
# Used when running locally; Compose overrides this with /run/secrets/oci_api_key.pem
OCI_KEY_FILE=./app/oci_api_key.pem
# OCI_KEY_PASSPHRASE=private-key-passphrase
# Instance configuration
OCI_AD=xxxx:AP-TOKYO-1-AD-1
OCI_SHAPE=VM.Standard.A1.Flex
OCI_OCPUS=2
OCI_MEMORY_IN_GB=12
OCI_BOOT_VOLUME_SIZE_IN_GBS=50
OCI_SUBNET_ID=ocid1.subnet.oc1.ap-tokyo-1.example
OCI_IMAGE_ID=ocid1.image.oc1.ap-tokyo-1.example
OCI_SSH_PUBLIC_KEY="ssh-rsa AAAAB3Nza... user@example"
# Optional IPv6 configuration; leave empty or remove it to disable IPv6 assignment
OCI_IPV6_SUBNET_CIDR=2603:c021:8000:e8ae:0000:0000:0000:0000/64
# Base delay between rounds; the actual delay is randomized between 88 and 92 seconds
RETRY_INTERVAL=90
# Optional Telegram notification
TELEGRAM_BOT_TOKEN=123456789:example-token
TELEGRAM_CHAT_ID=123456789
# Optional proxy
# HTTPS_PROXY=http://host.docker.internal:7890
# HTTP_PROXY=http://host.docker.internal:7890
Values containing spaces must be quoted, especially OCI_SSH_PUBLIC_KEY. Otherwise, when you run source .env, the shell interprets the remainder of the public key as a command.
| Variable | Required | Default | Description |
|---|---|---|---|
OCI_USER_ID | Yes | None | OCI user OCID |
OCI_TENANCY_ID | Yes | None | OCI tenancy OCID; also used as the instance compartment OCID |
OCI_FINGERPRINT | Yes | None | OCI API key fingerprint |
OCI_REGION | Yes | None | OCI region, for example ap-tokyo-1 |
OCI_KEY_FILE | Yes | None | Path to the OCI API private key; Compose overrides the path inside the container |
OCI_KEY_PASSPHRASE | No | Empty | Private-key passphrase |
OCI_AD | No | Empty | Availability domain; when empty, all ADs in the current region are tried |
OCI_SHAPE | No | VM.Standard.A1.Flex | OCI instance shape |
OCI_OCPUS | No | 2 | Number of OCPUs |
OCI_MEMORY_IN_GB | No | 12 | Memory size in GiB |
OCI_BOOT_VOLUME_SIZE_IN_GBS | No | 50 | Boot volume size in GB |
OCI_SUBNET_ID | Yes | None | OCID of the VNIC subnet |
OCI_IMAGE_ID | Yes | None | Operating system image OCID |
OCI_SSH_PUBLIC_KEY | Yes | None | SSH public key added to the instance; quote it because it contains spaces |
OCI_IPV6_SUBNET_CIDR | No | Empty | IPv6 subnet CIDR; an IPv6 address is requested when configured |
RETRY_INTERVAL | No | 90 | Base delay between rounds in seconds; the actual delay is randomized by ±2 seconds |
TELEGRAM_BOT_TOKEN | No | Empty | Telegram bot token |
TELEGRAM_CHAT_ID | No | Empty | Telegram recipient chat ID |
HTTPS_PROXY | No | Empty | HTTPS proxy used by Telegram and requests that support standard proxy variables |
HTTP_PROXY | No | Empty | HTTP proxy address |
https_proxy | No | Empty | Lowercase form of HTTPS_PROXY |
http_proxy | No | Empty | Lowercase form of HTTP_PROXY |
Telegram notifications are sent only when both TELEGRAM_BOT_TOKEN and TELEGRAM_CHAT_ID are configured.
If OCI returns 429 TooManyRequests, increase RETRY_INTERVAL to a value such as 120 or 180.
When using the published image, use the following docker-compose.yaml:
services:
oracle-arm-claimer:
image: wlkc/oracle-claimer
container_name: oracle-arm-claimer
env_file:
- .env
environment:
OCI_KEY_FILE: /run/secrets/oci_api_key.pem
volumes:
- ./app/oci_api_key.pem:/run/secrets/oci_api_key.pem:ro
restart: unless-stopped
stop_grace_period: 30s
Content type
Image
Digest
sha256:7bb1511dd…
Size
6.9 MB
Last updated
13 days ago
docker pull wlkc/oracle-claimer