monetto
V2EX  ›  Docker

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

  •  
  •   monetto · Jul 30, 2022 · 2399 views
    This topic created in 1456 days ago, the information mentioned may be changed or developed.

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

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

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

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

    求助大佬..

    6 replies    2022-07-31 03:01:46 +08:00
    caryqy
        1
    caryqy  
       Jul 30, 2022
    supervisor
    y830CAa5nink4rUQ
        2
    y830CAa5nink4rUQ  
       Jul 30, 2022
    自己弄个 supervisord 作为 pid 1 不就好了
    singerll
        3
    singerll  
       Jul 30, 2022 via Android
    dockerfile 的 cmd 参数里面,直接自定义个脚本
    momocraft
        4
    momocraft  
       Jul 30, 2022
    首先一个容器同时跑 ssh 和应用是不推荐的做法。如果是为了开发不如用 docker exec 代替 ssh

    -----------

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

    比如 dockerhub mysql 镜像的 entrypoint
    Privileges
        5
    Privileges  
       Jul 30, 2022
    Dockerfile 用 entrypoint 去调用你项目的启动脚本

    另外为什么要 SSH 的方式进去容器,exec 不更方便么
    ByteCat
        6
    ByteCat  
       Jul 31, 2022 via iPhone
    自己写一个 entrypoint.sh
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   945 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 28ms · UTC 19:24 · PVG 03:24 · LAX 12:24 · JFK 15:24
    ♥ Do have faith in what you're doing.