我正在尝试使用Docker镜像将简单的Spring Boot应用程序部署到Bluemix
该映像基于dockerfile/java:oracle-java8
并在我的本地Linux VM上运行完美 - 它在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"]
答案 0 :(得分:0)
将端口绑定到您的应用程序似乎存在问题。
在Dockerfile中,您需要以下内容。
EXPOSE
其中port为22,80,443,9080或9443。
此外,您需要定义一个命令来启动您的应用程序。
CMD [ “....”]
这是https://www.ng.bluemix.net/docs/#services/Containers/index.html的第6步。