gpt4 book ai didi

php - Docker 容器中的 SSH 导致 HTTP 404

转载 作者:搜寻专家 更新时间:2023-10-31 21:03:29 25 4
gpt4 key购买 nike

我有这么简单的 PHP dockerfile:

# Base image
FROM php:7-fpm

# Update packages list
RUN apt-get --yes update;

# Install SSH server, set root password and allow root login
RUN apt-get --yes install openssh-server
RUN mkdir /var/run/sshd
RUN echo 'root:123' | chpasswd
RUN sed -i 's/PermitRootLogin without-password/PermitRootLogin yes/' /etc/ssh/sshd_config

# Run SSH server
EXPOSE 22
CMD ["/usr/sbin/sshd", "-D"]

还有这样的docker-compose.yml文件

web:
image: nginx:latest
volumes:
- /c/Users/marcin/dock-test/composers/l1.app/html/:/usr/share/nginx/html/
- /c/Users/marcin/dock-test/composers/l1.app/nginx/conf.d/:/etc/nginx/conf.d/
- /c/Users/marcin/dock-test/composers/l1.app/nginx/log/:/var/log/nginx/
ports:
- "8080:80"
working_dir: /usr/share/nginx/html/
links:
- php
- db
container_name: l1.web
environment:
- VIRTUAL_HOST=l1.app
php:
build: ../builds
dockerfile: Dockerfile-php7-fpm
volumes:
- /c/Users/marcin/dock-test/composers/l1.app/html/:/usr/share/nginx/html/
- /c/Users/marcin/dock-test/composers/l1.app/php/config/:/usr/local/etc/php/
working_dir: /usr/share/nginx/html/
links:
- db
container_name: l1.php
ports:
- "22020:22"
db:
image: mysql:5.7
environment:
- MYSQL_ROOT_PASSWORD=pass
- MYSQL_DATABASE=
- MYSQL_USER=
- MYSQL_PASSWORD=
expose:
- 3306
volumes:
- /c/Users/marcin/dock-test/composers/l1.app/mysql/data/:/var/lib/mysql/
- /c/Users/marcin/dock-test/composers/l1.app/mysql/conf.d/:/etc/mysql/conf.d/
- /c/Users/marcin/dock-test/composers/l1.app/mysql/log/:/var/log/mysql/
ports:
- "33060:3306"
container_name: l1.db

问题 - 一切正常,直到我在我的 dockerfile 中添加最后显示的行:

CMD ["/usr/sbin/sshd", "-D"]

如果我添加此行,SSH 工作正常但我在显示页面时收到 404。当我评论这一行时,我得到的页面没有问题,但显然这个 SSH 不工作。

这可能是什么问题?我只想添加我需要在 PHP 容器中使用此 SSH 服务(在这种情况下运行 docker exec 不是一个选项)

最佳答案

base image php-fpm结束于

CMD ["php-fpm"]

您自己的 CMD 会覆盖它(意思是 php 。

一个解决方法是至少添加并调用包装脚本,该脚本将:

  • 调用php-fpm
  • 启动sshd 守护进程

但这不能很好地处理停止/终止信号,停止/终止信号不会停止一切。 There are special images用于管理多个主要流程。

OP Marcin Nabiałek确认 in the comments below :

I've created such file:

#!/bin/sh 
# Start PHP
php-fpm -D
# Start SSH
/usr/sbin/sshd -D

and it seems to be working now without a problem.

关于php - Docker 容器中的 SSH 导致 HTTP 404,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36964652/

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