在 Laravel sail 中启动 SSH 守护进程

Start SSH daemon in Laravel sail

我正在使用 Laravel Sail 并发布了 Dockerfile(因此我可以手动编辑它)。原因是我需要在容器本身上为我正在使用的程序使用 OpenSSH 服务器。

我可以通过将 && apt-get install -y openssh-server 添加到包部分并使用以下配置来安装 OpenSSH:

RUN mkdir /var/run/sshd
RUN sed -i 's/PermitRootLogin prohibit-password/PermitRootLogin yes/' /etc/ssh/sshd_config
RUN sed 's@session\s*required\s*pam_loginuid.so@session optional pam_loginuid.so@g' -i /etc/pam.d/sshd
EXPOSE 22

但问题是它不会在容器启动时启动。

根据 this answer 你可以添加一个 ENTRYPOINT 如下:

ENTRYPOINT service ssh restart && bash

但是你只能有一个 ENTRYPOINT 和 Laravel Sail 默认有这个:

ENTRYPOINT ["start-container"]

我试过以下方法:

因为 php 容器使用 supervisor you can add another application to the config. Reference for the config can be found here.

例子

ssh.ini:
[program:sshd]
command=/usr/sbin/sshd -D