Bluemix очень медленно запускает приложение Spring Boot, зависает

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

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.context.embedded.AnnotationConfigEmbeddedWebApplicationContext@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. Я остановил и запустил контейнер, но это не решило проблему.

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

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"]

person Daniil Shevelev    schedule 04.02.2015    source источник
comment
Не могли бы вы опубликовать ссылку на справку по отладке файла докера?   -  person Jeff Sloyer    schedule 05.02.2015
comment
Можете ли вы захватить дамп потока, когда он завис?   -  person Andy Wilkinson    schedule 05.02.2015
comment
Что такое помощь по отладке файла Docker? И как мне захватить дамп потока?   -  person Daniil Shevelev    schedule 05.02.2015
comment
Вы изменили образ dockerfile/java:oracle-java8 или используете его без изменений?   -  person Jeff Sloyer    schedule 06.02.2015
comment
@JeffSloyer Я использую немодифицированный образ dockerfile/java:oracle-java8 + мой исполняемый JAR.   -  person Daniil Shevelev    schedule 07.02.2015
comment
Есть ли что-то особенное, что вы делаете в своей банке? Вы хоть как-то могли это опубликовать?   -  person Jeff Sloyer    schedule 08.02.2015


Ответы (1)


Похоже, возникла проблема с привязкой порта к вашему приложению.

В вашем Dockerfile вам нужно следующее.

РАЗОБЛАЧАТЬ

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

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

CMD["...."]

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

person Jeff Sloyer    schedule 11.02.2015
comment
У меня в докере есть EXPOSE и CMD. Я опубликую это. - person Daniil Shevelev; 11.02.2015
comment
Я считаю, что есть какая-то проблема с распределением ресурсов — мое приложение начинает запрашивать у Java 1,5 ГБ ОЗУ, что меньше 2 ГБ, разрешенных в Bluemix. Однако я думаю, что он просто не получает эту оперативную память. - person Daniil Shevelev; 11.02.2015
comment
Хм, не могли бы вы попробовать сделать что-нибудь поменьше или немного скомпоновать ваше приложение, чтобы попытаться увидеть, в чем проблема? - person Jeff Sloyer; 11.02.2015
comment
Хорошо, я попробую, когда у меня будет время. - person Daniil Shevelev; 12.02.2015
comment
Эй, у меня похожая проблема, контейнер запускается медленно, а затем умирает, с этим изображением {registry.hub.docker.com/u/codeskyblue/docker-gogs}. У меня есть еще один связанный с этим вопрос: как я могу открыть порт 3000? В официальных документах говорится, что единственными открытыми портами для контейнеров и вашего плавающего IP-адреса являются: 22, 80, 443, 9080 и 9443. - person Daniil Shevelev; 14.02.2015
comment
Вы не можете открыть порт 3000, это должны быть 22, 80, 443, 9080 или 9433. Можете ли вы запустить свое приложение на одном из этих портов? - person Jeff Sloyer; 16.02.2015
comment
@DaSh, не могли бы вы принять ответ, чтобы мы могли закрыть это? - person Jeff Sloyer; 06.03.2015
comment
Ну, у меня никогда не получалось, чтобы это работало, и я разочаровался в этом. Это работало на AWS. Спасибо за вашу помощь. - person Daniil Shevelev; 07.03.2015
comment
Какой была последняя проблема, с которой вы столкнулись? - person Jeff Sloyer; 07.03.2015
comment
Контейнеры просто умирали после запуска. Нехватка памяти или что-то в этом роде. - person Daniil Shevelev; 07.03.2015
comment
Вы пытались уменьшить требуемую память для вашего контейнера? - person Jeff Sloyer; 08.03.2015
comment
Джефф, я просто перестал отлаживать это в какой-то момент. У меня не так много свободного времени :) - person Daniil Shevelev; 09.03.2015