如何 Docker 在容器启动时执行某些脚本

2022-07-30 12:20:32 +08:00
 monetto

如题,想在容器启动时 自动 启动 ssh-server ,同时启动 Spring 项目。

但是 Google 搜索的大部分都是 直接使用 SpringBoot 的 Docker Image 去启动项目。

目前想用自己的一个自定义的容器去做这些事... 就是在 Docker 容器启动的时候,自动去执行某些启动脚本。

容器已经设置了 --restart=always ,但是实测,宿主机重新启动的时候,不会执行 /etc/init.d 下面的脚本...

求助大佬..

1840 次点击
所在节点    Docker
6 条回复
caryqy
2022-07-30 12:27:49 +08:00
supervisor
y830CAa5nink4rUQ
2022-07-30 12:28:53 +08:00
自己弄个 supervisord 作为 pid 1 不就好了
singerll
2022-07-30 16:23:42 +08:00
dockerfile 的 cmd 参数里面,直接自定义个脚本
momocraft
2022-07-30 17:38:54 +08:00
首先一个容器同时跑 ssh 和应用是不推荐的做法。如果是为了开发不如用 docker exec 代替 ssh

-----------

常见做法是设计一个容器内路径,让 entrypoint 脚本逐个执行此路径内的脚本

比如 dockerhub mysql 镜像的 entrypoint
Privileges
2022-07-30 17:57:00 +08:00
Dockerfile 用 entrypoint 去调用你项目的启动脚本

另外为什么要 SSH 的方式进去容器,exec 不更方便么
ByteCat
2022-07-31 03:01:46 +08:00
自己写一个 entrypoint.sh

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/869624

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX