标签: deployment

如何在开发中编辑Docker容器中的代码?

我的所有网站代码都/srv在我的容器中.

我的Dockerfile使用git下载代码,并使其成为映像的一部分,以便更轻松地部署到生产环境.

但是,如何在开发中编辑代码?我认为使用卷是解决方案,例如:-v /docker/mycontainer/srv:/srv.但它会覆盖容器中的目录.如果这是我第一次运行它,它会清空它,因为主机中没有任何东西.所以无论我在Dockerfile中做了什么都会丢失.

里面/srv/myapp还有我希望在我的应用程序的不同版本之间共享的目录和文件,例如:/srv/myapp/user-uploads.这是专业Web开发中的常见做法.

那么我能做些什么来做这些事呢?:

  • 在开发中编辑/ srv中的代码
  • 不同版本的share/srv/myapp/user-uploads
  • 让Dockerfile下载代码.在我看来,在Docker之外做"git clone"或"git pull"会破坏Docker的目的.此外,还有一些我无法在主机中运行的东西,比如数据库迁移或其他特定于应用程序的脚本.

有没有办法进行反向音量安装?我的意思是让容器覆盖主机,而不是相反.

我想一个解决方案可能是在运行容器的守护进程之前将/ srv复制到/srv.deployment-copy.然后当我运行守护进程时检查/srv.deployment-copy是否存在并将所有内容复制回/ srv.这样我可以使用/ srv作为卷,并且仍然可以使用Dockerfile将代码部署到它.我已经在所有docker命令中使用别名,因此自动执行此操作不会有问题.你怎么看?

deployment web-deployment docker

62
推荐指数
4
解决办法
3万
查看次数

61
推荐指数
5
解决办法
3万
查看次数

在Windows可执行文件中嵌入JRE?

假设我想分发Java应用程序.

假设我想将它作为单个可执行文件分发.我可以轻松地将一个.jar与应用程序及其所有外部依赖项一起构建在一个文件中(带有一些Ant黑客攻击).

现在假设我想在Windows上将其作为.exe文件分发.这很简单,因为那里有很好的工具(例如Launch4j等).

但是现在假设我也不想依赖于最终用户安装了正确的JRE(或者根本就是任何JRE).我想用我的应用程序分发JRE,我的应用程序应该在这个JRE上运行.创建Windows安装程序可执行文件并嵌入包含所有必需JRE文件的文件夹非常简单.但后来我正在分发安装程序而不是单文件应用程序.

有没有办法将应用程序 JRE 嵌入到充当应用程序启动器的.exe文件中(而不是作为安装程序)?

java windows deployment executable software-distribution

61
推荐指数
4
解决办法
4万
查看次数

安全分发NodeJS应用程序

什么: NodeJS应用程序可以作为二进制文件分发吗?即.你通过V8将.js应用程序编译成其原生二进制文件,并将二进制文件分发给客户端?(如果您对NodeJS服务器有完全访问权限)...或者正在缩小代码,您可以做什么?

原因:我们在NodeJS中为客户端构建服务器端应用程序,这些应用程序通常托管在客户端的服务器上.分发源代码意味着客户可以轻松窃取我们的解决方案并停止支付许可费用.这使我们无需了解即可轻松进行逆向工程或重复使用我们的应用程序.

javascript security deployment obfuscation node.js

61
推荐指数
4
解决办法
3万
查看次数

ssh_init:网络错误:无法分配请求的地址

我正在尝试在 Windows 10 平台上使用腻子建立连接并传输文件。我已经验证 putty 中的默认端口是 22。当我在命令行中运行命令来连接和传输文件时,虽然我收到了上述错误。知道为什么会这样或我应该做什么吗?

deployment putty file-transfer

61
推荐指数
3
解决办法
7万
查看次数

无法从START_OBJECT标记中反序列化java.lang.String的实例

我遇到了一个问题,我的可部署jar遇到了一个异常,当我在IntelliJ中本地运行时,这个异常不会发生.

例外:

Receiving an event {id=2, socket=0c317829-69bf-43d6-b598-7c0c550635bb, type=getDashboard, data={workstationUuid=ddec1caa-a97f-4922-833f-632da07ffc11}, reply=true}
Firing getDashboard event to Socket#0c317829-69bf-43d6-b598-7c0c550635bb
Failed invoking AtmosphereFramework.doCometSupport()
java.lang.IllegalArgumentException: Can not deserialize instance of java.lang.String out of START_OBJECT token
 at [Source: N/A; line: -1, column: -1]
        at org.codehaus.jackson.map.ObjectMapper._convert(ObjectMapper.java:2502)
        at org.codehaus.jackson.map.ObjectMapper.convertValue(ObjectMapper.java:2468)
        at com.github.flowersinthesand.portal.support.DefaultDispatcher$DefaultHandler$DataParam.resolve(DefaultDispatcher.java:270)
        at com.github.flowersinthesand.portal.support.DefaultDispatcher$DefaultHandler.handle(DefaultDispatcher.java:204)
        at com.github.flowersinthesand.portal.support.DefaultDispatcher.fire(DefaultDispatcher.java:107)
        at com.github.flowersinthesand.portal.support.AbstractSocketFactory.fire(AbstractSocketFactory.java:73)
        at com.github.flowersinthesand.portal.atmosphere.AtmosphereSocketFactory.onRequest(AtmosphereSocketFactory.java:75)
        at org.atmosphere.cpr.AsynchronousProcessor.action(AsynchronousProcessor.java:256)
        at org.atmosphere.cpr.AsynchronousProcessor.suspended(AsynchronousProcessor.java:166)
        at org.atmosphere.container.Grizzly2WebSocketSupport.service(Grizzly2WebSocketSupport.java:75)
        at org.atmosphere.cpr.AtmosphereFramework.doCometSupport(AtmosphereFramework.java:1342)
        at org.atmosphere.websocket.DefaultWebSocketProcessor.dispatch(DefaultWebSocketProcessor.java:219)
        at org.atmosphere.websocket.DefaultWebSocketProcessor$2.run(DefaultWebSocketProcessor.java:183)
        at org.atmosphere.util.VoidExecutorService.execute(VoidExecutorService.java:101)
        at org.atmosphere.websocket.DefaultWebSocketProcessor.dispatch(DefaultWebSocketProcessor.java:178)
        at org.atmosphere.websocket.DefaultWebSocketProcessor.invokeWebSocketProtocol(DefaultWebSocketProcessor.java:167)
        at org.atmosphere.container.Grizzly2WebSocketSupport$Grizzly2WebSocketApplication.onMessage(Grizzly2WebSocketSupport.java:171)
        at org.glassfish.grizzly.websockets.DefaultWebSocket.onMessage(DefaultWebSocket.java:164)
        at org.glassfish.grizzly.websockets.frametypes.TextFrameType.respond(TextFrameType.java:70)
        at org.glassfish.grizzly.websockets.DataFrame.respond(DataFrame.java:104)
        at org.glassfish.grizzly.websockets.WebSocketFilter.handleRead(WebSocketFilter.java:221)
        at org.glassfish.grizzly.filterchain.ExecutorResolver$9.execute(ExecutorResolver.java:119) …
Run Code Online (Sandbox Code Playgroud)

java deployment grizzly atmosphere

58
推荐指数
4
解决办法
20万
查看次数

Maven使用SSH将本地文件复制到远程服务器

Maven可以使用SSH将本地文件复制到远程服务器吗?

我想在maven配置文件中指定位置,并在每次执行部署阶段时将该文件(或多个文件)复制到服务器.

deployment ssh maven-2

57
推荐指数
6
解决办法
6万
查看次数

为App Update提升最低iOS部署目标版本

假设我们有一个部署目标设置为3.0的应用程序,我们希望将部署目标提升到3.2.通常情况下,App Store不会将应用程序安装在IOS版本低于此值的设备上,但是在更新之前已经安装了应用程序的设备呢?他们会看到更新,但无法安装,他们只是没有看到更新,或天,禁止,将能够安装和应用程序只是不会启动?

我到处搜索这个,但我找不到任何关于提高应用更新的最低操作系统版本的信息.

谢谢!

iphone deployment app-store ipad ios

57
推荐指数
1
解决办法
7096
查看次数

如何在Apache中集成Clojure Web应用程序

注意

鉴于此OP大约两年前编写,而不是再次提出相同的问题,我想知道是否存在分步说明,以便我可以将Noir或其他Clojure Web应用程序集成到Apache中,无论是Jetty,Tomcat , 或者是其他东西.Django也存在类似的指令,我想我明白Python在Django的情况下是作为引擎而不是环形框架运行的,所以Clojure Web应用程序更复杂.

结束注释

我深深爱上了Clojure,而Compojure似乎是一个整洁的Web框架.

但是当我想将我的应用程序部署在像Tomcat这样的常规应用程序服务器上作为WAR时,它就崩溃了.我实际上必须为静态文件和资源编写自定义Ring处理程序,这些文件和资源可以在本地Jetty和Tomcat上运行,因为库存处理程序没有,我不得不手动将上下文根添加到任何地方.

令我感到非常惊讶的是,我必须编写所有这些代码来创建可以在Jetty和Tomcat上运行的最简单的Web应用程序.我只有三种可能的解释:

  1. 除了使用Jetty进行本地开发之外,没有人使用Clojure/Compojure,即在生产中
  2. 每个人都在没有上下文根的专用Jetty上部署Clojure/Compojure应用程序(LIke人们使用Node.js应用程序)
  3. 有一种非常简单的方法来规避我遇到的问题,我不知道

您认为以下哪一种情况?或者是别的什么?

编辑:

请注意,创建一个战争文件是Maven/Leiningen的明智之举,而不是我的意思.我想知道我必须编写如此多的代码来使Compojure与Tomcat一起工作,基本的东西,如静态文件服务和上下文根知识应该开箱即用.

deployment clojure war compojure

57
推荐指数
3
解决办法
1万
查看次数

Node.js设置便于部署和更新

我们目前正在为一个客户开发一个网站(Apache下的TYPO3),该网站由node.js/socket.io应用程序提供支持,该应用程序为CMS提供的内容提供实时更新.

由于这是我们的第一个node.js项目,因此我在"完美设置"方面没有任何最佳实践,因此我花了一些时间研究部署技术.

我仍然有几个问题可以实现一个良好的设置:

  1. 易于部署客户.这一点非常重要,因为我们的网站将整合到他们的"实时"TYPO3安装中,该安装服务于大量网站,并且运行在不是由客户管理的服务器上,而是另一个(集中式)组织,它支持呼叫和服务器更改.进程缓慢.

  2. 应该很容易更新.如上所述,请求重新启动并进行服务器更改是一个缓慢的过程,因此理想情况下,节点安装应该在收到推送到实时安装的更改时重新启动/更新git.

部署

普遍的共识似乎是使用forever,当涉及到部署节点的应用程序,防止他们逃跑.我已经测试了forever,并且在npm install forever -g(全局)安装时似乎工作正常.这需要外部协助来全局安装在实时环境中,所以我更喜欢从应用程序的node_modules目录运行它,但是我无法创建一个可靠的包装器来执行此操作.

此外,forever工作正常,但必须手动启动.什么是确保它在服务器启动时启动并保持运行的最佳方法?

  • 一个简单的init.d脚本?
  • 写一个看门狗包装?
  • 一个TYPO3调度程序任务,检查forever状态?

快速开发/重新启动更新

我们目前仍处于项目的开发阶段,每次我对node.js应用程序进行更改时,我都会手动重启nodeforever.这有效,但远非理想.有几个较小的npm模块可以检查文件修改并node在检测到的更改时重新启动,例如:

有没有人有这些经验?

更新:你为什么不只使用群集?

集群模块通过提供类似的功能重载机制,但不与节点0.5+工作.替换它的核心群集模块(节点0.6+)没有所有这些功能,只提供群集.而这反过来又不适合socket.io.至少没有使用Redis(这对我们来说是一个问题,因为我们不能强迫客户使用另一个先决条件服务).

-

显然,我正在尝试找到最稳定的解决方案,它将更新重启器与forever将项目交给客户之前结合起来,我真的希望有人能够生成经过验证的技术组合.

deployment updates node.js

56
推荐指数
3
解决办法
2万
查看次数