Her yazılımcının hayatında en az bir kere (genellikle haftada üç kere) karşılaştığı o meşhur an: docker-compose up yazarsınız, kahvenizden bir yudum alıp arkanıza yaslanırsınız ve terminal size kırmızı puntolarla bağırır:
"Error response from daemon: Bind for 0.0.0.0:27017 failed: port is already allocated."
İşte o an, bilgisayarınızla aranızdaki romantik ilişkinin bittiği ve dedektiflik maceranızın başladığı andır.
Portu Kim Çaldı?
Genellikle suçlu bellidir: Bilgisayarınıza aylar önce kurduğunuz ve arkada "çaktırmadan" çalışan yerel bir MongoDB servisi. O an terminale netstat veya lsof komutlarını girmek, bir binanın bodrum katında fenerle kaçak arayan bir bekçi gibi hissettirir. PID 33108 bulundu ve infaz edildi (taskkill /F /PID). Rahat bir nefes aldınız mı? Hayır, macera yeni başlıyor.
Docker’ın "İzin" Vermediği Anlar
Port sorununu çözersiniz, bu sefer karşınıza npm ERR! code EACCES çıkar. Docker konteynerı size adeta şunu söyler: "Ben bu klasöre yazmam, çünkü sahibi ben değilim!" Dockerfile içine eklenen o sihirli chown -R node:node komutları, bir nevi tapu dairesinde isim değişikliği yapmak gibidir. Yetkiyi verirsiniz, klasörü oluşturursunuz ve nihayet nodemon o güzelim yeşil yazılarıyla çalışmaya başlar.
RabbitMQ ve Bitmeyen Eklenti Aşkı
Tam her şey bitti derken, RabbitMQ loglarında bir uyarı çakar: "Delayed message exchange creation failed." Eklenti yok! RabbitMQ 4.0 kullanıyorsanız, kendinizi bir anda GitHub release sayfalarında en güncel .ez dosyasını ararken bulursunuz. Eklentiyi içeri kopyala, aktif et, servisi yeniden başlat...
Sonuç: Pes Etmeyenler Kulübü
Yazılımcı olmak sadece kod yazmak değil, aynı zamanda bilgisayarın size çıkardığı engelli parkuru en az hasarla tamamlamaktır. Eğer bugün terminaliniz size hata vermiyorsa, muhtemelen bir yerlerde yanlış giden bir şeyler vardır ya da henüz o komutu çalıştırmamışsınızdır.
Günün Sözü: Bir portu bin kişi ister, Docker alır.