Testlerde motor neden önemlidir
Testcontainers test paketi, bir test sınıfı için gerçek Postgres, Kafka veya Redis başlatır ve sonra kaldırır. Dev Container, projenin tüm araç zincirini yeniden derleyip başlatır. İkisinde de zaman konteyner yaşam döngüsü çağrılarına gider: tekrar tekrar oluşturma, başlatma, durdurma, kaldırma. Oxcart bu çağrılarda en hızlıdır.
| İşlem | Oxcart 0.1.2 | İkinci en hızlıya göre |
|---|---|---|
| API ile oluşturma (CLI olmadan) | 2.5 ms | 7× |
| API ile başlatma | 18.5 ms | 2,1× |
| API ile durdurma | 4.0 ms | 21× |
| 20 konteyner oluşturup başlatma | 0.69 s | 2,5× |
| 20 konteyneri durdurup kaldırma | 77 ms | 8,9× |
docker run --rm … true | 42 ms | 3,4× |
Oxcart 0.1.2, beraberindeki docker 29.9 istemcisiyle 2026-10-10 tarihinde ölçüldü; diğer çalışma zamanları aynı günün daha erken saatlerinde, aynı Mac ve test düzeneğinde docker 29.4 ile ölçüldü. Apple M5 Max, her birine 8 CPU ve 12 GiB, tek tek çalıştırıldı, beş örneğin medyanları. Tam tablo: karşılaştırmalar.
Dev Containers ve Testcontainers'ı Oxcart'a bağlayın
- Oxcart'ı kurup açın. Kurulum
oxcartadlı Docker bağlamı oluşturur. Yalnızca başka bir şey kullanılmıyorsa etkinleştirir;docker context showile kontrol edin. - docker komutunu Oxcart'a yönlendirin.
docker context use oxcartçalıştırın veya Settings › Command line tools altında Use Oxcart for the docker command seçeneğini açın. Kapatmak önceki bağlamınızı geri getirir. - Test çerçevelerine soketi verin. Docker bağlamları yerine
DOCKER_HOSTokuyan araçlar için bağlamdan dışa aktarın:export DOCKER_HOST=$(docker context inspect oxcart --format '{{.Endpoints.docker.Host}}'). - Testlerinizi çalıştırın. Test paketinizi her zamanki gibi çalıştırın. Testcontainers konteynerlerini Docker Engine API üzerinden oluşturur, başlatır ve kaldırır.
- Dev Container'ı açın. Projeyi Dev Container'ında açın veya Dev Containers CLI ile
devcontainer up --workspace-folder .çalıştırın.
Testcontainers
Testcontainers kütüphaneleri (Java, Go, Node, Python, .NET ve diğerleri) docker CLI üzerinden değil, doğrudan Docker Engine API ile konuşur. Oxcart API sürümü 1.54 üzerinde anlaşır ve 1.40–1.54 aralığını kabul eder; güncel Testcontainers sürümleri soketi bulduğunda özel ayar olmadan bağlanır.
Soketi bulma
Testcontainers önce DOCKER_HOST değerine bakar. Oxcart soketi özel durum klasöründe 0600 izinleriyle bulunur; yolu oxcart Docker bağlamında saklanır. Her shell için bir kez dışa aktarın veya IDE'nizin test yapılandırmasında ayarlayın:
export DOCKER_HOST=$(docker context inspect oxcart --format '{{.Endpoints.docker.Host}}')
./gradlew test # or: mvn verify, go test ./..., pytest, npm test Yardımcı konteynerler ve konteyner içindeki soket
Testcontainers, çöken testlerden sonra temizlik yapan küçük yardımcı konteyner başlatır; bazı kurulumlarda testler konteyner içinde çalışır. İkisi de Docker soketini bağlar. Oxcart'ta -v /var/run/docker.sock:/var/run/docker.sock, konteynere Linux tarafından aynı Docker API'ı sağlar; yardımcı konteynerler, docker-outside-of-docker, Portainer ve Traefik beklendiği gibi çalışır. Araç bunun yerine Mac tarafındaki DOCKER_HOST yolunu konteynere bağlamaya çalışırsa Testcontainers'ın standart TESTCONTAINERS_DOCKER_SOCKET_OVERRIDE ayarı /var/run/docker.sock bağlamasını söyler.
Dockerfile'dan derlenen imajlar
Testcontainers, testinizdeki Dockerfile'dan imaj derleyebilir (ImageFromDockerfile ve karşılıkları). Bu, Oxcart'ın BuildKit üzerinde çalıştırdığı Engine API derleme uç noktasını; tar bağlamları (düz ve gzip), derleme argümanları, etiketler ve birden fazla tag ile kullanır.
Dev Containers
Dev Container, projenin araç zincirini konteyner olarak tanımlar; Dev Containers araçları (VS Code uzantısı, devcontainer CLI ve onu kullanan editörler) docker CLI üzerinden derleyip çalıştırır. Etkin bağlam oxcart olduğunda bunu Oxcart yapar.
Projenizi araç zinciri ve destekleyici servisleriyle birlikte açın. Dev Containers CLI çalışma alanını Postgres ve Redis gibi servislerle başlatır; root olmayan node kullanıcınız çalışma alanını düzenleyebilir ve projenin oluşturma sonrası betiği bağımlılıkları hazırlar. Ekip arkadaşları aynı yapılandırmadan aynı ortamı elde eder.
npm install -g @devcontainers/cli
devcontainer up --workspace-folder .
devcontainer exec --workspace-folder . bash Apple silicon üzerinde Dev Containers ipuçları
- Mimari: çoğu Dev Container temel imajı arm64 sunar. Yalnızca amd64 imajını Oxcart Rosetta üzerinden çalıştırır; Apple silicon üzerinde Docker Compose rehberine bakın.
- Birimlerde bağımlılıklar:
node_modules, paket önbellekleri ve veritabanı verilerini adlandırılmış birimlere koyun; kaynak kodu bind mount ile bağlanan çalışma alanında tutun. - Dosya izleme: Mac'teki düzenlemeler konteyner içinde inotify olayları üretmez; konteynerde çalışan izleyici periyodik yoklama kullanmalıdır.
- Kodlama ajanları: Dev Container içinde çalışan ajan shell'ini proje konteynerinde tutar; Mac'teki ajan, Oxcart MCP sunucusuyla Dev Container servislerini inceleyebilir (Yapay zekâ kodlama ajanları için Docker).
Sürprizsiz Docker bağlamı
Oxcart kurulumda oxcart bağlamını oluşturur ve yalnızca mevcut kullanımınıza dokunmuyorsa etkinleştirir: etkin bağlam default olduğunda ve soketinde hiçbir şey yanıt vermediğinde. Aksi halde mevcut bağlamınız kalır. Settings › Command line tools altındaki Use Oxcart for the docker command, oxcart bağlamına geçer ve önceki bağlamı hatırlar; kapatmak geri döndürür. Oxcart Mac'inizde hiçbir zaman /var/run/docker.sock oluşturmaz veya değiştirmez, API'ı hiçbir zaman TCP'de değildir.
Sorular
Testcontainers, Oxcart ile Apple silicon Mac'lerde çalışır mı?
Evet. Testcontainers, Oxcart'ın uyguladığı Docker Engine API ile (1.40–1.54 sürümleri) konuşur; buna Dockerfile'dan derlenen imajlar için kullandığı derleme uç noktası dahildir. Konteynerler, Testcontainers yardımcılarının beklediği gibi Docker soketini /var/run/docker.sock konumuna da bağlayabilir.
Testcontainers için DOCKER_HOST nasıl ayarlanır?
oxcart Docker bağlamından okuyun: docker context inspect oxcart --format '{{.Endpoints.docker.Host}}', unix:// yolu yazdırır. Shell'de veya IDE test çalıştırma ayarlarında DOCKER_HOST olarak dışa aktarın.
Entegrasyon testlerim Oxcart ile neden daha hızlı?
Test paketleri zamanlarının çoğunu konteyner oluşturma, başlatma, durdurma ve kaldırmaya harcar. Aynı Mac'te Oxcart API oluşturma başına 2.5 ms, başlatma başına 18.5 ms, durdurma başına 4.0 ms ve 20 konteyneri durdurup kaldırmak için 77 ms ölçüldü: her işlemde test ettiğimiz üç çalışma zamanı arasında en hızlıydı.
VS Code Dev Containers, Oxcart ile çalışır mı?
Dev Containers CLI 0.89.0, Oxcart'ta gerçek çok servisli yapılandırmayı derleyip başlattı; Postgres ve Redis sağlıklıydı, konteyner kullanıcısı çalışma alanına yazabiliyordu. Dev Containers araçları docker CLI'ı kullanır; CLI'ı oxcart bağlamıyla Oxcart'a yönlendirin.
Dev Container içinde docker-outside-of-docker çalışır mı?
Evet. /var/run/docker.sock yolunu konteynere bağlayın; içerideki docker CLI aynı motorla konuşur. Oxcart'ın özel uç noktaları bu soketten reddedilir; konteyner konteynerleri yönetebilir ama Oxcart'ın iç bileşenlerine erişemez.
Oxcart Mac'imde /var/run/docker.sock dosyasını değiştirir mi?
Hayır. Oxcart Mac'te hiçbir zaman /var/run/docker.sock oluşturmaz veya değiştirmez. İstemciler oxcart Docker bağlamıyla veya bu bağlamın belirttiği soket yoluyla erişir.
Kaynaklar ve yöntem
- Uyumluluk: Oxcart'ın doğrulanmış entegrasyon yolları (docker-py ve Testcontainers'ın kullandığı Engine API derlemesi, Dev Containers CLI 0.89.0, konteyner içindeki Docker soketi) ve API sürüm aralığı.
- Docker bağlamı seçimi ve komut satırı kurulumu: dağıtıldığı haliyle Oxcart.
- Hız verileri: Oxcart 0.1.2, 2026-10-10, Apple M5 Max, 8 CPU ve 12 GiB; diğer çalışma zamanları aynı günün daha erken saatlerinde, aynı Mac ve test düzeneğinde docker 29.4 istemcisiyle ölçüldü.