在查看Amazon DynamoDB之后,我一直在试图找出如何存储我在代码中创建的复杂对象并希望保留.我理解如何将这些对象存储在像MySql这样的关系数据库中,但是如何将它们存储在DynamoDB中呢?
我可以想到一种方法....将它们转换为Json并将对象的Json表示存储在DynamoDB中.为了让它们再次从DynamoDB中取出,我会将它们从Json转发回我的代码中的Object表示.
这是一个例子:
对于这种类型的对象:汽车有一个具有许多零件的引擎.每个零件都有一个序列号,一个寿命和一个替换值.现在我可以将Car变成json,看起来像这样:
{
"engine": {
"parts": [
{
"serialNumber": "1234",
"lifeSpan": 10,
"replacementValue": 100
},
{
"serialNumber": "5678",
"lifeSpan": 1,
"replacementValue": 200
}
]
}
}
Run Code Online (Sandbox Code Playgroud)
我应该将上面的Json存储在Dynamo中作为Key:CarName'Jaguar',Value [在json之上]?或者有更好的方法来存储汽车对象?
我想简单地启动一个docker容器来执行一些最终启动JBoss的java代码.
这工作正常,除了我无法弄清楚如何再次附加到容器并返回到bash提示符.
这就是我启动容器的方式:
docker run -i -t -p 80:80 -v /tmp/automatefiles:/automatefromhost jboss bash -c 'cd automatefromhost; chmod 777 *.*; ./runAutomate.sh;'
Run Code Online (Sandbox Code Playgroud)
这是runAutomate.sh
/usr/bin/java -cp Automate.jar -Djava.net.preferIPv4Stack=true net.Automate > automateresults &
tail -f automateresults
Run Code Online (Sandbox Code Playgroud)
现在我必须在最后执行尾部以使容器在完成运行我的Automate代码后保持运行.最终的结果是Jboss正在运行我的应用程序配置正确.
现在当我再次尝试连接到容器时,我只得到一个没有提示的空白屏幕......并且无法返回到容器内的提示符.所以没有办法在容器启动后与容器进行交互.
关于我如何启动容器的任何想法,让它保持运行然后再附加到容器并返回到提示中 ls, tail etc .
编辑:我最终这样做:
我复制了这种方法:https://stackoverflow.com/a/20932423/1519407 并添加到我的脚本中
while ( true )
do
echo "Detach with Ctrl-p Ctrl-q. Dropping to shell"
sleep 1
/bin/bash
done
Run Code Online (Sandbox Code Playgroud)
这仍然看起来有点hacky但是它有效......我认为最好沿着安装ssh到容器上的路径或使用类似http://phusion.github.io/baseimage-docker/的东西