自从过去3到4年以来我一直在使用Heroku,现在我有客户想要使用openshift来进行ruby应用程序部署.
我知道heroku功能和openshift的新功能.我知道openhift的一些功能,如齿轮,墨盒,市场等.
两者都使用aws进行在线服务和相同的git部署策略.
我想知道opensuift over heroku的优势是什么来部署ruby应用程序?
在Tomcat的官方页面中,它说Tomcat 7支持Java 8.如果我下载它并使用Java 8运行它可以工作.
但是,在Openshift上是Tomcat 7(JBoss EWS 2.0).在这个网页中,它说EWS 2.0 不支持Java 8.如果我将我的Java 8应用程序部署到Openshift(Tomcat 7),它就无法运行.
为什么?
我尝试在Openshift上使用Tomcat 7安装Java 8:https://stackoverflow.com/a/23895161/2442133 但它并不适合我.我有错误:
org.springframework.beans.factory.BeanCreationException: Error creating bean
with name 'org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping':
Initialization of bean failed; nested exception is
org.springframework.beans.factory.CannotLoadBeanClassException: Error loading
class [pl.xxx.controller.HomeController] for bean with name 'homeController'
defined in file [/var/lib/openshift/xxx/app-
root/runtime/dependencies/jbossews/webapps/web1/WEB-
INF/classes/xxx/controller/HomeController.class]: problem with class file or
dependent class; nested exception is java.lang.UnsupportedClassVersionError:
xxx/controller/HomeController : Unsupported major.minor version 52.0 (unable to
load class xxx.controller.HomeController)
Run Code Online (Sandbox Code Playgroud)
Unsupported …
我似乎遇到了一个简单的问题,感觉我错过了一些必不可少的东西.
我在我们公司有一个私人码头图像注册表,它托管我们开发的所有docker图像.
在我们的构建过程中不断更新此注册表,并且经常将新图像推送到它.
现在我们正在使用一个openshift系统,它有一些图像和它自己的注册表.
在这两个系统之间同步图像的最佳方法是什么?
例如,我们有一个像这样部署的应用程序:
oc new-app myregistry.mydomain.edu/binbase/minix
Run Code Online (Sandbox Code Playgroud)
运行得很好.
我们现在想用最新的更改更新此部署,为此我做了:
oc import-image minix
Run Code Online (Sandbox Code Playgroud)
标签规格创建PullSpec图像最近23小时前myregistry.mydomain.edu/binbase/minix:latest f6646382cfa32da291e8380421ea656110090256cd195746a5be2fcf61e4edf1
这是正确的图像,现在执行一个
oc deploy minix --latest
Run Code Online (Sandbox Code Playgroud)
但这仍然部署当前图像,而不是新更新的图像.
知道为什么这个,或者我们做错了什么?
所有我想要todo现在重新部署最新的图像.
亲切的问候
我用NodeJS创建了一个应用程序,我正在使用ws模块.如果我在localhost中测试应用程序它是有效的,连接websockets没有任何问题.现在我已将应用程序上传到Openshift,当我尝试从客户端访问时,它返回无法建立与websocket的连接.
如果我在我的应用程序中使用putty尾部,我会收到以下消息:DEBUG:这种类型的响应不能有一个正文.忽略传递给end()的数据.
我在服务器中的代码是:
#!/bin/env node
//Openshift variables
var ipaddress = process.env.OPENSHIFT_NODEJS_IP || "192.168.69.42";
var port = process.env.OPENSHIFT_NODEJS_PORT || 8080;
//NodeJS require modules
var Enum = require('enum');
var WebSocketServer = require('ws').Server
wss = new WebSocketServer({host:ipaddress, port:port});
var fs = require('fs');
wss.on('connection', function(ws) {
console.log((new Date()) + ' Connection from origin: ' + ws._socket.remoteAddress);
});
console.log((new Date()) + " Server is listening on: " + ipaddress + ':' port);
Run Code Online (Sandbox Code Playgroud)
在客户端:
var ws = new WebSocket("ws://192.168.69.42:8080/");
ws.onopen = function() { …Run Code Online (Sandbox Code Playgroud) 我在OpenShift上使用WordPress小型齿轮盒.
有关应用程序磁盘使用率超过其配额95%的警告.
警告:Gear ...正在使用99.5%的磁盘配额
这导致齿轮脱机.下载应用程序,.tar文件只有大约55MB.我使用了以下整洁的命令,得到了"成功"响应而没有解决问题.
rhc app-tidy [appname]
任何建议如何解决这个问题?
我从Openshift创建了一个基本的Nodejs应用程序并随机,该服务在几天内终止了几次.没有来自我的Nodejs模块的错误消息,只有在自动安装的haproxy中.
来自haproxy.log的消息是:
[WARNING] 184/001333 (193501) : Server express/local-gear is DOWN for maintenance.
[WARNING] 184/010106 (483047) : config : log format ignored for proxy 'stats' since it has no log address.
[WARNING] 184/010106 (483047) : config : log format ignored for proxy 'express' since it has no log address.
[WARNING] 184/010106 (483047) : Server express/local-gear is DOWN, reason: Layer4 connection problem, info: "Connection refused", check duration: 0ms. 0 active and 0 backup servers left. 0 sessions active, 0 requeued, 0 remaining …Run Code Online (Sandbox Code Playgroud) 我的实体看起来像
@Entity
public class Member {
@Id
private UUID id;
@Column(name = "member_external_id", unique = true, nullable = false)
private String memberExternalId;
@Column(name = "client_id", unique = true, nullable = false)
private String clientId;
@Column(name = "client_secret", unique = true, nullable = false)
private String clientSecret;
@Column(unique = true, nullable = false)
private String email;
private boolean active;
@Column(name = "created_at")
private LocalDateTime createdAt;
public Member() {
// required by JPA
}
....
}
Run Code Online (Sandbox Code Playgroud)
当我使用PostgreSQL在OpenShift上部署我的应用程序时,我在日志中看到以下错误
Caused by: org.hibernate.exception.SQLGrammarException: could not …Run Code Online (Sandbox Code Playgroud) 我事先意识到这是一个模糊的问题,但我很难过我还能在这里尝试什么......
我一直在经历其他SO问题并遵循他们的建议但到目前为止还没有解决我的问题.
这是我得到的具体错误.
Stopping NodeJS cartridge
Fri Jul 10 2015 10:36:28 GMT-0400 (EDT): Stopping application 'appname' ...
Fri Jul 10 2015 10:36:29 GMT-0400 (EDT): Stopped Node application 'appname'
Starting NodeJS cartridge
Fri Jul 10 2015 10:36:30 GMT-0400 (EDT): Starting application 'appname' ...
Waiting for application port (8080) become available ...
Application 'appname' failed to start (port 8080 not available)
Failed to execute: 'control restart' for /var/lib/openshift/MYID/nodejs
Run Code Online (Sandbox Code Playgroud)
我的package.json文件是最新的所有我的依赖项,有scripts: { start: 'node server.js' }属性,但我仍然收到此错误.
如果我SSH并进入我的current/repo目录并运行node …
我在SO上检查了类似的问题,但他们没有解决我的问题.
我正在Openshift上部署Symfony2应用程序.它在我的Windows 10笔记本电脑上运行良好,但我在Openshift上收到以下错误消息:
Fatal error: Uncaught exception 'Symfony\Component\DependencyInjection\Exception\ParameterNotFoundException'
with message 'You have requested a non-existent parameter "database_path".
Did you mean one of these: "database_host", "database_port", "database_name", "database_user"?'
in /var/lib/openshift/55eed4837628e1199f0000bb/app-root/runtime/repo/vendor/symfony/symfony/src/Symfony/Component/DependencyInjection/ParameterBag/ParameterBag.php:106 Stack trace: #0
/var/lib/openshift/55eed4837628e1199f0000bb/app-root/runtime/repo/vendor/symfony/symfony/src/Symfony/Component/DependencyInjection/ParameterBag/ParameterBag.php(248):
Symfony\Component\DependencyInjection\ParameterBag\ParameterBag->get('database_path') #1 [internal function]:
Symfony\Component\DependencyInjection\ParameterBag\ParameterBag->Symfony\Component\DependencyInjection\ParameterBag\{closure}(Array) #2
/var/lib/openshift/55eed4837628e1199f0000bb/app-root/runtime/repo/vendor/symfony/symfony/src/Symfony/Component/DependencyInjection/ParameterBag/ParameterBag.php in
/var/lib/openshift/55eed4837628e1199f0000bb/app-root/runtime/repo/vendor/symfony/symfony/src/Symfony/Component/DependencyInjection/ParameterBag/ParameterBag.php on line 106
Run Code Online (Sandbox Code Playgroud)
我config.yml是:
imports:
- { resource: parameters.yml }
- { resource: security.yml }
- { resource: services.yml }
...
doctrine:
dbal:
driver: pdo_sqlite
charset: UTF8
path: "%kernel.root_dir%/../%database_path%"
...
Run Code Online (Sandbox Code Playgroud)
我parameters.yml是:
parameters: …Run Code Online (Sandbox Code Playgroud) 我有一个带有Zipkin库的客户端应用程序,其中包含spring application.properties中的配置.
camel.zipkin.host-name=hawkular-apm-server.com
camel.zipkin.port=443
camel.zipkin.include-message-body-streams=true
Run Code Online (Sandbox Code Playgroud)
Maven依赖
<dependency>
<groupId>org.apache.camel</groupId>
<artifactId>camel-zipkin-starter</artifactId>
</dependency>
Run Code Online (Sandbox Code Playgroud)
可以从本地计算机访问hawkular apm服务器控制台.
但是,当调用客户端应用程序中暴露的其余api时,会记录zipkin跟踪,但不会在hawkular apm服务器上收集它们.
04:31:55.632 [http-nio-0.0.0.0-8080-exec-1] INFO o.a.c.c.s.CamelHttpTransportServlet - Initialized CamelHttpTransportServlet[name=CamelServlet, contextPath=]
04:31:55.668 [http-nio-0.0.0.0-8080-exec-1] DEBUG org.apache.camel.zipkin.ZipkinTracer - clientRequest [service=MyCamelClient, traceId=-5541987202080201726, spanId=-5541987202080201726]
04:31:55.672 [http-nio-0.0.0.0-8080-exec-1] DEBUG org.apache.camel.zipkin.ZipkinTracer - serverRequest [service=MyCamel, traceId=-5541987202080201726, spanId=-5541987202080201726]
04:31:55.676 [http-nio-0.0.0.0-8080-exec-1] DEBUG org.apache.camel.zipkin.ZipkinTracer - serverResponse[service=MyCamel, traceId=-5541987202080201726, spanId=-5541987202080201726]
04:31:55.677 [http-nio-0.0.0.0-8080-exec-1] DEBUG org.apache.camel.zipkin.ZipkinTracer - clientResponse[service=MyCamelClient, traceId=-5541987202080201726, spanId=-5541987202080201726]
04:31:55.758 [pool-1-thread-1] WARN o.a.t.transport.TIOStreamTransport - Error closing output stream.
java.net.SocketException: Socket closed
at java.net.SocketOutputStream.socketWrite(SocketOutputStream.java:118)
at java.net.SocketOutputStream.write(SocketOutputStream.java:155)
at java.io.BufferedOutputStream.flushBuffer(BufferedOutputStream.java:82)
at java.io.BufferedOutputStream.flush(BufferedOutputStream.java:140)
at java.io.FilterOutputStream.close(FilterOutputStream.java:158)
at org.apache.thrift.transport.TIOStreamTransport.close(TIOStreamTransport.java:110) …Run Code Online (Sandbox Code Playgroud)