我制作了一个很小的Phoenix Framework应用程序(运行时得到的内容仅作了少许修改:mix phoenix.new)。我一直在尝试将其部署在Docker容器中。在容器运行时,它可以正常工作,但始终会在启动后一分钟内消失,并显示消息“已杀死”。我是否提出要求似乎并不重要。我尝试观看docker事件,并得到以下信息:
$ docker events
2016-04-09T16:24:02.538602484-04:00 container create
ef45a768723c64125c717a7b40ee7513e477f27339c6266bd28cc3084c60e11f
(image=gcr.io/myprojectname/myapp:v2, name=amazing_bhabha)
2016-04-09T16:24:02.550438045-04:00 container attach
ef45a768723c64125c717a7b40ee7513e477f27339c6266bd28cc3084c60e11f
(image=gcr.io/myprojectname/myapp:v2, name=amazing_bhabha)
2016-04-09T16:24:02.599731705-04:00 network connect
c64a1439c8095f82ab0fea5c48b563c8aac7256d6064b3189b0bc8d052d69fe4
(name=bridge, type=bridge, container=ef45a768723c64125c717a7b40ee7513e477f27339c6266bd28cc3084c60e11f)
2016-04-09T16:24:02.600048755-04:00 container start
ef45a768723c64125c717a7b40ee7513e477f27339c6266bd28cc3084c60e11f
(image=gcr.io/myprojectname/myapp:v2, name=amazing_bhabha)
2016-04-09T16:24:53.858352733-04:00 container die
ef45a768723c64125c717a7b40ee7513e477f27339c6266bd28cc3084c60e11f
(name=amazing_bhabha, image=gcr.io/myprojectname/myapp:v2)
2016-04-09T16:24:53.930349810-04:00 network disconnect
c64a1439c8095f82ab0fea5c48b563c8aac7256d6064b3189b0bc8d052d69fe4
(container=ef45a768723c64125c717a7b40ee7513e477f27339c6266bd28cc3084c60e11f, name=bridge, type=bridge)
Run Code Online (Sandbox Code Playgroud)
我对Docker和Elixir还是很陌生,所以我不确定我还可以做哪些其他研究。这里有一个类似的听起来的问题:我运行了一个docker容器,但几分钟后,它被自己杀死了
但是我不确定OP是否或如何解决它。预先感谢您的任何提示。请告知我是否还有其他可以帮助您的信息。
编辑1:我了解到docker ps -a实际上会告诉我退出代码,该代码在其他地方没有找到。我所有的容器都退出并显示137错误代码。我的Docker VM具有4GB内存,因此我尝试使用-m = 3g标志运行,但得到了相同的结果。我也没有看到Windows进程资源管理器中的任何进程接近3GB。
编辑2:我对容器的内存限制进行了更多研究,发现容器的生存时间与我允许的内存量直接相关。因此,我创建了一个全新的项目(mix --no-brunch --no-ecto phoenix.new),复制了Dockerfile,并尝试构建和运行它。它给了我完全相同的结果。这使我相信我的问题出在我的Dockerfile或我如何运行该应用程序中。
Dockerfile:
FROM marcelocg/phoenix
MAINTAINER Arcaten
RUN echo $PWD
#Copy source
ADD . ./
#Get dependencies
RUN yes | mix local.hex
RUN yes | …Run Code Online (Sandbox Code Playgroud) 我有一个定义的结构,包含一个std :: list.在我的代码中,我尝试遍历此列表,但我得到了一些奇怪的结果.
struct my_struct_t {
std::list<int> my_list;
//More fields
};
Run Code Online (Sandbox Code Playgroud)
这是我的头文件中定义的结构.
并且包含此标头的文件中的一些示例代码将是:
std::list<int>::iterator my_iterator;
struct my_struct_t* test_struct = (struct my_struct_t*) malloc(sizeof(struct my_struct_t));
my_iterator = test_struct->my_list.begin();
printf("Beginning of list address: %p\n", my_iterator);
my_iterator = test_struct->my_list.end();
printf("End of the list address: %p\n", my_iterator);
printf("Address of the list: %p\n", &(test_struct->my_list));
Run Code Online (Sandbox Code Playgroud)
此代码编译并运行正常,但输出将类似于:
Beginning of list address: (nil)
End of the list address: 0x86f010
Address of the list: 0x86f010
Run Code Online (Sandbox Code Playgroud)
最后两行对我来说很有意义,因为列表应该是空的.但是我如何/为什么我开始得到一个空指针?我怎样才能解决这个问题?