Eu escrevi um pequeno webapp há algum tempo atrás que tem uma dependência do sistema que está disponível apenas para sistemas unix, então o docker foi a escolha natural (embora eu tenha tido algum sucesso com o vagrant ..)
Estou usando o Windows para desenvolvimento e também executando este aplicativo da web em seu contêiner do Docker.
Então me deparei com o mesmo problema, "como iniciar isso na inicialização do sistema"?
Acabei com um pequeno arquivo em lote no meu diretório de inicialização automática, contendo algo como as seguintes linhas:
docker-machine start default
docker run -d -p 8080:8080 -v //c/Users/%USERNAME%/somepath:/c/Users/%USERNAME%/somepath my/image --some.webapp.param=some-webapp-param-value
A primeira chamada inicia a máquina virtual "padrão", embora você deva ser capaz de especificar uma vm diferente lá. A segunda chamada executa o contêiner docker "my / image", expondo a porta 8080 ao sistema host e montando "somepath" do diretório inicial do meu usuário. Certifique-se de especificar o parâmetro "-d" enquanto ele executa o container "in the background" (marque "docker run --help")
Depois disso, meu webapp pode ser acessado no endereço IP da "VM padrão" (no meu caso, que era 192.168.99.100, isso pode diferir no seu sistema, você pode verificar a saída ao iniciar este "terminal de início rápido docker" como o endereço IP será registrado no console.)
Com isso, posso usar meu navegador normalmente, aponte para " link " e posso trabalhar com meu webapp.
Espero que ajude =)
editar
com o dito arquivo batch agora disponível, um tem 3 opções:
-
coloque o arquivo em lote no diretório de inicialização automática (requer sessões de usuário interativas, portanto, provavelmente não é adequado para instâncias do servidor.)
-
agende a execução do arquivo de lote através do agendador de tarefas do Windows. lá você pode definir "executar na inicialização do computador" como um gatilho para a tarefa. a tarefa é executada independentemente de uma sessão interativa (um usuário conectado ...) estar disponível ou não
-
use um wrapper de serviço como NSSM para instalar o arquivo de lote como um serviço do Windows