docker

2016-04-02 37 views
2

'da ENTRYPOINT ifadesini anlamak için asp.net core 1.0 kodumu Windows ortamından uzak Linux docker konteynerine geçireceğim. Temel olarak kapsayıcı uygulamayı sunucu olarak barındırır.docker

Artık farklı bloglarda ENTRYPOINT için farklı yapılandırmayı görüyorum. https://alexanderzeitler.com/articles/Running-ASP.NET-5-beta4-in-Docker-with-DNX-runtime/

  • ENTRYPOINT ["./web"] de Cannot run asp.net 5 from docker
  • ENTRYPOINT ["dnx", "./src/HelloMvc6", "kestrel"] de http://blog.dudak.me/2015/deploying-aspnet-5-applications-to-docker-containers/
  • ENTRYPOINT ["dnx", "-p", "project.json", "web"] de

    1. ENTRYPOINT ["./kestrel"]http://www.hanselman.com/blog/PublishingAnASPNET5AppToDockerOnLinuxWithVisualStudio.aspx

    kullanarak eğer liman işçisi için yeni. Farklılıkları bilmiyorum ve hangisinin kullanılabileceğinden emin değilim.

  • +0

    Sadece bir rastgele komut listesi yayınladınız. [Dokümantasyon] (https://docs.docker.com/engine/reference/builder/#entrypoint) ile başlamanızı ve ardından net olmayan şeyler hakkında özel sorular sormanızı öneririm. – larsks

    +0

    Entrypoint, yalnızca docker başlatıldığında çalıştırılacak komuttur. Listelediğiniz örnekler az çok aynıdır. 1 ve 4 "kestrel" ve "web" kendileri, eğer açtığınızda aynı "dnx ...." komutunu bulacaksınız. Bu komutu nasıl kullanacağınızı araştırmak isteyebilirsiniz. –

    +0

    @warmoverflow, No. 4 için. Neden 'web' kullanılır? Bu özel bir kelime mi? Bunun için belgeyi bulamıyorum. Bu bir komuttur. –

    cevap

    4

    Bunlar, project.json'dan gelen çeşitli komutlar veya project.json'da komutları çağıran komut dosyalarıdır. Bir uygulamayı yayınladığınızda

    Ayrıca
    "commands": { 
        "gen": "Microsoft.Extensions.CodeGeneration", 
        "run": "run server.urls=http://localhost:5003", 
        "web": "Microsoft.AspNet.Server.Kestrel", 
        "kestrel": "Microsoft.AspNet.Hosting --server Microsoft.AspNet.Server.Kestrel --server.urls http://localhost:5004", 
        "weblistener": "Microsoft.AspNet.Hosting --server Microsoft.AspNet.Server.WebListener --server.urls http://localhost:5002" 
    }, 
    

    , komutlar adıyla bir senaryo oluşturulur: Eğer a project.json file bakarsak

    sizin gibi komutların bir listesini göreceksiniz. Örneğin, kestrel dnx kestrel (unix) ve kestrel.cmd (pencere) üretir veargümanını kestrel argümanı ile başlatır. Çalıştırılacak projeyi belirtir.

    -pdnx 'a geçti. dnx'un daha yeni sürümlerinde -p'a ihtiyacınız yoktur; bunun yerine ilk argümanı geçen proje yolu.

    Yani, sizin durumda:

    1. ENTRYPOINT ["./kestrel"]dnx . kestrel veya dnx kestrel çağıran komut dosyasıdır. ENTRYPOINT ["dnx", "-p", "project.json", "web"], (web komutu) bağımsız değişkenleri ile dnx'u çağırır.
    2. ENTRYPOINT ["dnx", "./src/HelloMvc6", "kestrel"], ancak 2 kestrel komutuyla aynıdır.
    3. ENTRYPOINT ["./web"] 1 ile aynı, web komutunu çağıran komut dosyasını çağırır.
    +0

    Teşekkürler. Bir takip sorusu. [Buradan] (https://blogs.msdn.microsoft.com/stevelasker/2016/02/19/developing-asp-net-apps-in-docker-containers/) 'dan farklı bir tane kullanmıştı: ENTRYPOINT ['/bin/bash "," -c "," dnx-watch web "]'. Bir asp dağıttığımızda.bir docker konteynerine net olarak, bunu kullanmalı mıyım yoksa orijinal 'ENTRYPOINT' listesinden 1,2,3 ve 4'lük bir listeyi almalı mıyız? –

    +0

    'dnx-watch' genellikle bir geliştirme senaryosudur, çünkü kaynak kodunu da dağıtmanızı gerektirir. Kodu geliştirdiğinizde ve değiştirdiğinizde bu durum güzeldir çünkü bir dosya değiştiğinde uygulamanız yeniden başlayacak, ancak dosyaların değişmediği bir üretim senaryosunda buna ihtiyacınız yoktur. –