INTEGRITY Dokumentace

Lokální vývoj

Kontejner i Worker můžete spustit lokálně současně jednoduše spuštěním npx wrangler dev (nebo vite dev pro projekty Vite používající Cloudflare Vite plugin) ve složce vašeho projektu.

Pro lokální vývoj Workerů s podporou Containers musíte nejprve zajistit, že máte nainstalovaný nástroj CLI kompatibilní s Dockerem a Engine. Můžete například použít Docker Desktop ↗ nebo Colima ↗.

Při spuštění vývojářské relace se image kontejneru sestaví nebo stáhne. Pokud váš Konfigurace Wrangleru nastavuje proměnnou image atribut na místní cestu, obraz se sestaví z místního Dockerfile. Pokud je image atribut je nastaven na odkaz na obraz, obraz se stáhne z odkazovaného registru, jako je Cloudflare Registry, Docker Hub, Amazon ECR nebo Google Artifact Registry.

Instance kontejneru se spustí lokálně ve chvíli, kdy kód vašeho Workeru zavolá vytvoření nového kontejneru. Požadavky se pak automaticky nasměrují na správný lokálně běžící kontejner.

Po ukončení vývojářské relace by se měly zastavit všechny přidružené instance kontejneru, lokální image se ale neodstraňují, aby je bylo možné znovu použít při dalších sestaveních.

Podpora FUSE

Miniflare automaticky uděluje lokálním kontejnerům oprávnění Docker potřebná pro Filesystem in Userspace (FUSE). Platí to pro wrangler dev, plugin Cloudflare Vite a přímé použití Miniflare.

Miniflare uděluje tato oprávnění, když lokální Docker daemon běží uvnitř virtuálního stroje (VM). To zahrnuje Docker engine na macOS a přes Windows Subsystem for Linux (WSL). Na Linuxu Miniflare uděluje oprávnění pro lokální rootless Docker, když /dev/fuse je k dispozici.

Rootful Docker na Linuxu ve výchozím nastavení při lokálním vývoji nepodporuje FUSE. Miniflare neuděluje oprávnění FUSE, pokud démon Dockeru tyto podmínky nesplňuje nebo jej nelze zkontrolovat.

Iterativní vývoj kódu Container

Pokud vyvíjíte pomocí Wrangleru nebo Vite, kód vašeho Workeru se při každém uložení změny automaticky znovu načte, kód běžící uvnitř kontejneru se ale nenačítá znovu.

Pro opětovné sestavení kontejneru s novými změnami kódu můžete kliknout na [r] na klávesnici, což spustí nové sestavení. Instance Container se pak restartují s nově sestavenými images.

Můžete si raději nastavit vlastní sledování změn kódu a mechanismy pro jeho opětovné načítání, případně připojit lokální adresář do lokálních image kontejneru a synchronizovat tak změny kódu. To je možné, žádný vestavěný mechanismus pro to ale neexistuje a doporučené postupy budou záviset na jazycích a frameworcích, které ve svém kódu kontejneru používáte.

Řešení potíží

Zpřístupnění portů

V produkčním prostředí budou všechny porty vašeho kontejneru přístupné z Workeru, takže je není nutné výslovně otevírat pomocí EXPOSE instrukce ↗ ve vašem Dockerfile.

Pro lokální vývoj ale musíte v Dockerfile deklarovat všechny porty, ke kterým potřebujete přistupovat, pomocí instrukce EXPOSE, například: EXPOSE 4000, pokud budete přistupovat na port 4000.

Pokud jste neotevřeli žádné porty, zobrazí se vám při lokálním vývoji následující chyba:

The container "MyContainer" does not expose any ports. In your Dockerfile, please expose any ports you intend to connect to.

A pokud se pokusíte připojit k libovolnému portu, který jste nezpřístupnili ve svém Dockerfile se vám zobrazí následující chyba:

connect(): Connection refused: container port not found. Make sure you exposed the port in your container definition.

Totéž se může objevit i tehdy, když se kontejner teprve spouští a porty ještě nejsou dostupné. Opakujte pokus, dokud porty nebudou k dispozici. Tuto logiku opakování byste měli mít vyřešenou automaticky, pokud používáte balíček containers ↗.

Konfigurace socketu: internal error

Pokud se zobrazí nesrozumitelná internal error při pokusu o připojení ke kontejneru budete možná muset nastavit DOCKER_HOST proměnnou prostředí na cestu k socketu, na kterém naslouchá váš kontejnerový engine. Wrangler nebo Vite se pokusí automaticky najít správný socket pro komunikaci s vaším kontejnerovým enginem, ale pokud se to nepodaří, budete možná muset tuto proměnnou prostředí nastavit na odpovídající cestu k socketu.

Chyby SSL s Cloudflare One Client nebo VPN

Pokud používáte Cloudflare One Client nebo VPN, která provádí kontrolu TLS, mohou HTTPS požadavky během sestavování v Dockeru selhat s chybami SSL nebo certifikátu. Děje se to proto, že VPN zachytává provoz HTTPS a znovu jej podepisuje vlastní certifikační autoritou, které Docker ve výchozím nastavení nedůvěřuje.

Řešením je jedna z těchto možností: