2015-02-04 4 views
0

Я пытаюсь развернуть простое приложение Spring Boot для Bluemix с использованием изображения Docker.
Изображение построено на основе dockerfile/java:oracle-java8 и отлично работает на моей локальной виртуальной машине Linux - оно начинается через 10-30 секунд.
Однако для контейнера Blumix, использующего одно и то же изображение в облаке, требуется более 10 минут. На странице консоли Bluemix отображается статус Running, но за последние 10 минут прогресс (судя по журналам) отсутствует. Я получаю следующий журнал (обратите внимание на временные интервалы) с помощью команды sudo ice logs -o myContainer:Bluemix очень медленно запускает приложение Spring Boot, зависает

Target is container cloud. Invoking cloud service... 

    . ____   _   __ _ _ 
/\\/___'_ __ _ _(_)_ __ __ _ \ \ \ \ 
(()\___ | '_ | '_| | '_ \/ _` | \ \ \ \ 
\\/ ___)| |_)| | | | | || (_| | )))) 
    ' |____| .__|_| |_|_| |_\__, |//// 
=========|_|==============|___/=/_/_/_/ 
[32m :: Spring Boot :: [39m  [2m (v1.2.1.RELEASE)[0;39m 

[2m2015-02-04 21:07:49.006[0;39m [32m INFO[0;39m [35m1[0;39m [2m---[0;39m [2m[   main][0;39m [36mcom.dash.nlpHighlight.web.App   [0;39m [2m:[0;39m Starting App with PID 1 (/opt/highlighter/highlighter-0.0.1.jar started by root in /opt/highlighter) 
[2m2015-02-04 21:07:49.057[0;39m [32m INFO[0;39m [35m1[0;39m [2m---[0;39m [2m[   main][0;39m [36mationConfigEmbeddedWebApplicationContext[0;39m [2m:[0;39m Refreshing org.springframework.boot[email protected]5aa60e57: startup date [Wed Feb 04 21:07:49 UTC 2015]; root of context hierarchy 
[2m2015-02-04 21:07:52.773[0;39m [32m INFO[0;39m [35m1[0;39m [2m---[0;39m [2m[   main][0;39m [36mo.s.b.f.s.DefaultListableBeanFactory [0;39m [2m:[0;39m Overriding bean definition for bean 'beanNameViewResolver': replacing [Root bean: class [null]; scope=; abstract=false; lazyInit=false; autowireMode=3; dependencyCheck=0; autowireCandidate=true; primary=false; factoryBeanName=org.springframework.boot.autoconfigure.web.ErrorMvcAutoConfiguration$WhitelabelErrorViewConfiguration; factoryMethodName=beanNameViewResolver; initMethodName=null; destroyMethodName=(inferred); defined in class path resource [org/springframework/boot/autoconfigure/web/ErrorMvcAutoConfiguration$WhitelabelErrorViewConfiguration.class]] with [Root bean: class [null]; scope=; abstract=false; lazyInit=false; autowireMode=3; dependencyCheck=0; autowireCandidate=true; primary=false; factoryBeanName=org.springframework.boot.autoconfigure.web.WebMvcAutoConfiguration$WebMvcAutoConfigurationAdapter; factoryMethodName=beanNameViewResolver; initMethodName=null; destroyMethodName=(inferred); defined in class path resource [org/springframework/boot/autoconfigure/web/WebMvcAutoConfiguration$WebMvcAutoConfigurationAdapter.class]] 

Использование sudo ice inspect myContainer я получаю:

Target is container cloud. Invoking cloud service... 
{ 
    "Config": { 
     "AttachStderr": "", 
     "AttachStdin": "", 
     "AttachStdout": "", 
     "Cmd": [ 
      "date" 
     ], 
     "Dns": "", 
     "Env": { 
      "group-id": "0000", 
      "space-id": "5588d535-a208-4cd2-be05-db781af48ada", 
      "tagformat": "space-id group-id uuid", 
      "tagseparator": "_" 
     }, 
     "Hostname": "", 
     "Image": "registry-ice.ng.bluemix.net/myOrg/myImage:latest", 
     "Memory": 256, 
     "MemorySwap": "", 
     "OpenStdin": "", 
     "PortSpecs": "", 
     "StdinOnce": "", 
     "Tty": "", 
     "User": "", 
     "VCPU": 1, 
     "Volumes": [], 
     "VolumesFrom": "", 
     "WorkingDir": "" 
    }, 
    "Created": "2015-02-04T21:35:17Z", 
    "HostConfig": { 
     "Binds": "null", 
     "CapAdd": [], 
     "CapDrop": [], 
     "ContainerIDFile": "", 
     "Links": [], 
     "LxcConf": [], 
     "PortBindings": {}, 
     "Privileged": "false", 
     "PublishAllPorts": "false" 
    }, 
    "HostId": "c4cc40876ba4db63069eb35d061670783146287b3d9ca5155dedf1be", 
    "Human_id": "myContainer", 
    "Id": "fa15e14d-ffe2-4621-b81a-579a60b52936", 
    "Image": "ecbb9431-822e-4e74-8a04-5b942743a42c", 
    "Name": "myContainer", 
    "NetworkSettings": { 
     "Bridge": "", 
     "Gateway": "", 
     "IpAddress": "172.16.46.71", 
     "IpPrefixLen": 0, 
     "PortMapping": "null", 
     "PublicIpAddress": "129.41.249.63" 
    }, 
    "Path": "date", 
    "ResolvConfPath": "/etc/resolv.conf", 
    "State": { 
     "ExitCode": "", 
     "Ghost": "", 
     "Pid": "", 
     "Running": "true", 
     "StartedAt": "", 
     "Status": "Running" 
    }, 
    "Volumes": [] 
} 

Первоначально я начал контейнер с помощью ice run myContainer myImage. Я остановился и начал контейнер, но это не решило проблему.

Вот содержимое файла Докер:

FROM dockerfile/java:oracle-java8 
ADD myJar-0.0.1.jar /opt/myFolder/ 
ADD application.properties /opt/myFolder/ 
EXPOSE 8080 
WORKDIR /opt/myFolder/ 
CMD ["java", "-jar", "-Xmx1500m", "myJar-0.0.1.jar"] 
+0

Не могли бы вы разместить ссылку на вашу док-станцию ​​для отладки? –

+0

Можете ли вы захватить свалку потока, когда он подвешен? –

+0

Что такое "Docker File Debugging help"? И как мне «захватить дамп потока»? –

ответ

0

Похоже, что проблема с обязательным портом для вашего приложения.

В вашем файле Docker необходимо следующее.

ПОДВЕРГАТЬ

Где порт 22, 80, 443, 9080 или 9443.

Кроме того, вы должны определить команду, чтобы запустить приложение.

ЦМД [ "...."]

Это от шага 6 из https://www.ng.bluemix.net/docs/#services/Containers/index.html.

+0

У меня есть «ЭКСПОЗИЦИЯ» и «CMD» в моем докере. Я отправлю его. –

+0

Я считаю, что есть некоторая проблема с распределением ресурсов - мое приложение начинает спрашивать Java о 1,5 ГБ оперативной памяти, которая находится под 2 ГБ, что разрешено на Bluemix. Однако я думаю, что он просто не получает эту ОЗУ. –

+0

Хм, не могли бы вы попытаться сделать что-то немного поменьше или немного спрятать свое приложение, чтобы попытаться понять, где проблема? –