gpt4 book ai didi

linux - 为什么 docker 容器中的应用程序不重启?

转载 作者:数据小太阳 更新时间:2023-10-29 03:12:31 24 4
gpt4 key购买 nike

我已经部署了一些带有 golang 应用程序的 docker 容器。其中一个我需要通过这个命令启动:

docker run --restart unless-stopped -it myapp /bin/bash

下一步我进入容器并编辑一些配置文件,然后我运行

go build main.go

./main之后,我按 ctrl+q 并将其保留。一切正常,重启服务器后我的所有容器都完美重启。但是有一个问题,当 myapp 容器重新启动时,golang 应用程序不会运行,而容器仍在运行。我必须再次输入并运行 ./main。我该如何解决?

Dockerfile

FROM golang:1.8 
WORKDIR /go/src/app
COPY . .
RUN go-wrapper download # "go get -d -v ./..."
RUN go-wrapper install # "go install -v ./..." RUN ["apt-get","update"]
RUN ["apt-get","install","-y","vim"]
EXPOSE 3000
CMD ["app"]

最佳答案

当您创建容器并将 /bin/bash 作为命令传递时,Docker 会关心这些。当容器重新启动时,它将启动另一个 /bin/bash 实例。

Docker 不会监视您的 shell session ,也不会查看您在启动命令后执行的操作。如果你想实际运行 ./main 作为容器的命令,那么你需要传入 /go/src/app/main 作为命令/bin/bash

此外,编译代码最好在镜像构建阶段完成,而不是在容器运行时完成。

关于linux - 为什么 docker 容器中的应用程序不重启?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47524122/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com