2016-04-02 3 views
2

Я собираюсь вывести свой код asp.net core 1.0 из среды Windows в удаленный контейнер докеров Linux. В основном контейнер будет размещать приложение в качестве сервера.Чтобы понять ENTRYPOINT в докере

Теперь я вижу разную конфигурацию для ENTRYPOINT в разных блогах.

  1. ENTRYPOINT ["./kestrel"] на http://blog.dudak.me/2015/deploying-aspnet-5-applications-to-docker-containers/
  2. ENTRYPOINT ["dnx", "-p", "project.json", "web"] на Cannot run asp.net 5 from docker
  3. ENTRYPOINT ["dnx", "./src/HelloMvc6", "kestrel"] на https://alexanderzeitler.com/articles/Running-ASP.NET-5-beta4-in-Docker-with-DNX-runtime/
  4. ENTRYPOINT ["./web"] при использовании http://www.hanselman.com/blog/PublishingAnASPNET5AppToDockerOnLinuxWithVisualStudio.aspx

Я новичок в докер. Я не знаю различий и не знаю, какой из них можно использовать.

+0

Вы только что отправили список случайных команд. Я бы предложил начать с [документации] (https://docs.docker.com/engine/reference/builder/#entrypoint), а затем задать конкретные вопросы о вещах, которые не ясны. – larsks

+0

Точка входа - это просто команда запуска, когда начинается докер. Приведенные вами примеры более или менее одинаковы. № 1 и 4 'kestrel' и' web' сами являются скриптом оболочки, который, если вы откроете, вы найдете ту же команду 'dnx ....'. Возможно, вам захочется изучить, как правильно использовать эту команду. –

+0

@warmoverflow, для № 4. Зачем использовать 'web'? Это специальное слово? Я не могу найти документ для этого. Это команда. –

ответ

4

Это разные команды от project.json или скрипты, вызывающие команды в project.json.

Если вы посмотрите на a project.json file вы увидите список команд, как:

"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" 
}, 

Кроме того, когда вы публикуете приложение, сценарий с именем команд будет сгенерирован. Например, для kestrel dnx будет генерировать kestrel (unix) и kestrel.cmd (windows), который просто вызывает dnx с аргументом kestrel.

-p, переданный в dnx, определяет проект для запуска. В новых версиях dnx вам не нужен -p; вместо этого первым аргументом является путь к проекту.

Таким образом, в вашем случае:

  1. ENTRYPOINT ["./kestrel"] это скрипт, который вызывает dnx . kestrel или dnx kestrel.
  2. ENTRYPOINT ["dnx", "-p", "project.json", "web"] вызывает dnx с аргументами -p project.json web (веб-команда).
  3. ENTRYPOINT ["dnx", "./src/HelloMvc6", "kestrel"] такой же, как 2, но kestrel команда.
  4. ENTRYPOINT ["./web"] такой же, как 1, вызывает скрипт, вызывающий команду web.
+0

Спасибо. Следующий вопрос. Из [здесь] (https://blogs.msdn.microsoft.com/stevelasker/2016/02/19/developing-asp-net-apps-in-docker-containers/) он использовал другую 'ENTRYPOINT [/bin/bash "," -c "," dnx-watch web "]'. Когда мы развертываем asp.net to the docker container, следует ли использовать этот или забрать любой из моего первоначального списка «ENTRYPOINT» из 1,2,3 и 4? –

+0

'dnx-watch', как правило, является сценарием разработки, потому что вам также требуется развернуть исходный код. Это хорошо, когда вы разрабатываете и меняете код, потому что ваше приложение будет перезагружаться при изменении файла, но в сценарии производства, где файлы не меняются, вам это не нужно. –

Смежные вопросы