INTEGRITY Dokumentace

Prostředí

Wrangler umožňuje pomocí prostředí vytvářet různé konfigurace pro stejnou aplikaci Workeru. Prostředí se konfigurují v Konfigurační soubor Wrangler.

Když vytvoříte prostředí, Cloudflare ve skutečnosti vytvoří nový Worker s názvem <top-level-name>-<environment-name>. Například projekt Workeru s názvem my-worker s prostředím dev by se nasadil jako Worker s názvem my-worker-dev.

Prohlédněte si následující tok prostředí:

  1. Vytvořte Worker s názvem my-worker například.

  2. Vytvořte prostředí, například dev, ve Workeru v Konfigurační soubor Wrangler, přidáním [env.<ENV_NAME>] sekce.

    {
    	"name": "my-worker",
    	"env": {
    		"<ENV_NAME>": {
    			// environment-specific configuration goes here
    		}
    	}
    }
    name = "my-worker"
    
    [env]
    "<ENV_NAME>" = { }
  3. Můžete nakonfigurovat dev prostředí s jinými hodnotami než prostředí nejvyšší úrovně. Podrobnosti v zde o tom, jak se různé možnosti dědí, nebo nedědí, mezi prostředími. Například chcete-li nastavit jinou route pro Workera v dev prostředí:

    {
    	"$schema": "./node_modules/wrangler/config-schema.json",
    	"name": "your-worker",
    	"route": "example.com",
    	"env": {
    		"dev": {
    			"route": "dev.example.com",
    		},
    	},
    }
    "$schema" = "./node_modules/wrangler/config-schema.json"
    name = "your-worker"
    route = "example.com"
    
    [env.dev]
    route = "dev.example.com"
  4. Prostředí se používají s --env nebo -e příznak u příkazů Wrangler. Worker můžete například vyvíjet v dev prostředí spuštěním npx wrangler dev -e=dev, a nasaďte jej pomocí npx wrangler deploy -e=dev.

    Alternativně můžete použít CLOUDFLARE_ENV proměnná prostředí pro výběr aktivního prostředí. Například CLOUDFLARE_ENV=dev npx wrangler deploy nasadí do dev prostředí. --env argument příkazové řádky má přednost před CLOUDFLARE_ENV proměnná prostředí.

Neděditelné klíče a prostředí

Neděditelné klíče lze konfigurovat na nejvyšší úrovni, prostředí je ale nemohou dědit, takže je nutné je nastavit zvlášť pro každé prostředí.

Například vazby a proměnné prostředí nejsou dědičné a musí se zadávat zvlášť pro každé prostředí ve vašem Konfigurační soubor Wrangler.

Prohlédněte si následující ukázkový soubor Wrangler:

{
	"$schema": "./node_modules/wrangler/config-schema.json",
	"name": "my-worker",
	"vars": {
		"API_HOST": "example.com",
	},
	"kv_namespaces": [
		{
			"binding": "<BINDING_NAME>",
			"id": "<KV_NAMESPACE_ID_DEV>",
		},
	],
	"env": {
		"production": {
			"vars": {
				"API_HOST": "production.example.com",
			},
			"kv_namespaces": [
				{
					"binding": "<BINDING_NAME>",
					"id": "<KV_NAMESPACE_ID_PRODUCTION>",
				},
			],
		},
	},
}
"$schema" = "./node_modules/wrangler/config-schema.json"
name = "my-worker"

[vars]
API_HOST = "example.com"

[[kv_namespaces]]
binding = "<BINDING_NAME>"
id = "<KV_NAMESPACE_ID_DEV>"

[env.production.vars]
API_HOST = "production.example.com"

[[env.production.kv_namespaces]]
binding = "<BINDING_NAME>"
id = "<KV_NAMESPACE_ID_PRODUCTION>"

Service bindings

Chcete-li použít service binding která cílí na Worker v konkrétním prostředí, musíte připojit název prostředí k názvu cílového Workeru v service pole. Mělo by být ve formátu <worker-name>-<environment-name>. V příkladu níže máme dva Workery, oba s staging prostředí. worker-b má service binding na worker-a. Všimněte si, jak service v staging prostředí odkazuje na worker-a-staging, zatímco service binding na nejvyšší úrovni odkazuje na worker-a.

{
	"$schema": "./node_modules/wrangler/config-schema.json",
	"name": "worker-a",
	"vars": {
		"FOO": "<top-level-var>",
	},
	"env": {
		"staging": {
			"vars": {
				"FOO": "<staging-var>",
			},
		},
	},
}
"$schema" = "./node_modules/wrangler/config-schema.json"
name = "worker-a"

[vars]
FOO = "<top-level-var>"

[env.staging.vars]
FOO = "<staging-var>"
{
	"$schema": "./node_modules/wrangler/config-schema.json",
	"name": "worker-b",
	"services": {
		"binding": "<BINDING_NAME>",
		"service": "worker-a",
	},
	// Note how `service = "worker-a-staging"`
	"env": {
		"staging": {
			"service": {
				"binding": "<BINDING_NAME>",
				"service": "worker-a-staging",
			},
		},
	},
}
"$schema" = "./node_modules/wrangler/config-schema.json"
name = "worker-b"

[services]
binding = "<BINDING_NAME>"
service = "worker-a"

[env.staging.service]
binding = "<BINDING_NAME>"
service = "worker-a-staging"

Secrets pro produkci

Můžete přiřadit hodnoty specifické pro dané prostředí secrets spuštěním příkazu wrangler secret put <KEY> -env. Můžete také vytvořit dotenv typové soubory nazvané .dev.vars.<environment-name>.

Stejně jako jiné proměnné prostředí jsou tajné klíče nedědičné a musí být definováno pro každé prostředí zvlášť.

Secrets v místním vývoji

Uložte secrets pro použití při lokálním vývoji buď do .dev.vars soubor nebo .env soubor ve stejném adresáři jako konfigurační soubor Wrangleru.

Tyto soubory by měly být formátovány pomocí dotenv syntax. Například:

.dev.vars / .env
SECRET_KEY="value"
API_TOKEN="eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9"

Chcete-li nastavit různé tajné klíče pro každé prostředí Cloudflare, vytvořte soubory s názvem .dev.vars.<environment-name> nebo .env.<environment-name>.

Když v lokálním vývoji vyberete prostředí Cloudflare, načte se nejprve soubor specifický pro dané prostředí, a to před obecným .dev.vars (nebo .env) soubor.


Příklady

Staging a produkční prostředí

Následující soubor Wrangler přidává dvě prostředí, [env.staging] a [env.production], do souboru Wrangler. Pokud nasazujete do Custom Domain nebo trasa, musíte zadat route nebo routes klíč pro každé prostředí.

{
	"$schema": "./node_modules/wrangler/config-schema.json",
	"name": "my-worker",
	"route": "dev.example.com/*",
	"vars": {
		"ENVIRONMENT": "dev",
	},
	"env": {
		"staging": {
			"vars": {
				"ENVIRONMENT": "staging",
			},
			"route": "staging.example.com/*",
		},
		"production": {
			"vars": {
				"ENVIRONMENT": "production",
			},
			"routes": ["example.com/foo/*", "example.com/bar/*"],
		},
	},
}
"$schema" = "./node_modules/wrangler/config-schema.json"
name = "my-worker"
route = "dev.example.com/*"

[vars]
ENVIRONMENT = "dev"

[env.staging]
route = "staging.example.com/*"

  [env.staging.vars]
  ENVIRONMENT = "staging"

[env.production]
routes = [ "example.com/foo/*", "example.com/bar/*" ]

  [env.production.vars]
  ENVIRONMENT = "production"

Název prostředí můžete předat pomocí --env příznak pro spouštění příkazů v konkrétním prostředí.

S touto konfigurací se Wrangler bude chovat následovně:

npx wrangler deploy
Uploaded my-worker
Published my-worker
  dev.example.com/*
npx wrangler deploy --env staging
Uploaded my-worker-staging
Published my-worker-staging
  staging.example.com/*
npx wrangler deploy --env production
Uploaded my-worker-production
Published my-worker-production
  example.com/*

Jakýkoli definovaný proměnné prostředí ( vars klíč) jsou dostupné prostřednictvím env objekt ve vašem Workeru.

S touto konfigurací env.ENVIRONMENT proměnnou lze použít k volání konkrétního kódu v závislosti na daném prostředí:

export default {
	async fetch(request, env, ctx) {
		if (env.ENVIRONMENT === "staging") {
			// staging-specific code
		} else if (env.ENVIRONMENT === "production") {
			// production-specific code
		}
	},
};

Staging prostředí s *.workers.dev

Chcete-li nasadit svůj kód do *.workers.dev subdoménu, zahrňte workers_dev = true v požadovaném prostředí. Váš soubor Wrangler pak může vypadat takto:

{
	"$schema": "./node_modules/wrangler/config-schema.json",
	"name": "my-worker",
	"route": "example.com/*",
	"env": {
		"staging": {
			"workers_dev": true,
		},
	},
}
"$schema" = "./node_modules/wrangler/config-schema.json"
name = "my-worker"
route = "example.com/*"

[env.staging]
workers_dev = true

S touto konfigurací se Wrangler bude chovat následovně:

npx wrangler deploy
Uploaded my-worker
Published my-worker
  example.com/*
npx wrangler deploy --env staging
Uploaded my-worker
Published my-worker
  https://my-worker-staging.<YOUR_SUBDOMAIN>.workers.dev