在Docker容器中的SSH会导致HTTP 404
我有这样简单的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
不是一个选项)
基本图像php-fpm结束
CMD ["php-fpm"]
你自己的CMD
会覆盖那个(意思是php。
一个解决方法是至less要添加并调用一个包装脚本将会:
- 调用
php-fpm
- 启动
sshd
守护进程
但是,这不会阻止/终止信号,这不会阻止一切。 有特殊的图像pipe理多个主要过程。
OP MarcinNabiałek 在下面的评论中证实:
我已经创build了这样的文件:
#!/bin/sh # Start PHP php-fpm -D # Start SSH /usr/sbin/sshd -D
而且现在似乎正在工作,没有问题。
- 使用Mocha + TypeScript + Docker远程debuggingnode.js。 debugging器不反映实际的执行?
- 链接的docker集装箱不能相互通信
- 两个孤立的docker,铁轨和python,如何从Rails应用程序调用Python
- 简单的脚本需要删除超过4周的所有docker图像
- 如何在AWS EC2上启动Docker守护进程相关文件时使用单独的文件系统
- (psycopg2.OperationalError)无法连接到服务器:连接被拒绝是服务器
- 在构buildDocker镜像时使用主机上的configuration文件
- 在docker集装箱几分钟后,弹簧启动连接重置
- 如何恢复被docker rmi命令删除的docker镜像?