加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

php – 保持容器活着并使用docker-compose链接

发布时间:2020-12-16 03:54:00 所属栏目:安全 来源:网络整理
导读:我想使用docker-compose将php和几个数据库(orientdb,neo4j等)组合在一起.然后进入php容器并使用shell执行命令. 单独地,我的所有容器都在游泳,当我把它们组合在一起时,它们都会运行.但是,我不能为我的生活弄清楚如何保持php容器活着,所以我可以进入它进行测试

我想使用docker-compose将php和几个数据库(orientdb,neo4j等)组合在一起.然后进入php容器并使用shell执行命令.

单独地,我的所有容器都在游泳,当我把它们组合在一起时,它们都会运行.但是,我不能为我的生活弄清楚如何保持php容器活着,所以我可以进入它进行测试.

为简单起见,我只使用一个数据库:orient-db.

我的docker-compose.yml文件:

version: '2'
services:
  php:
    build: .
    links:
       - orientdb

  orientdb:
    image: orientdb:latest
    environment:
      ORIENTDB_ROOT_PASSWORD: rootpwd
    ports:
       - "2424:2424"
       - "2480:2480"

我的“php”Dockerfile:

FROM php:5.6-cli
ADD . /spider
WORKDIR /spider
RUN curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/bin/ --filename=composer
RUN composer install --prefer-source --no-interaction

RUN yes | pecl install xdebug 
    && echo "zend_extension=$(find /usr/local/lib/php/extensions/ -name xdebug.so)" > /usr/local/etc/php/conf.d/xdebug.ini

我试过(除其他外):

> docker-组成一个终端,然后docker attach in另一个终端
>在我的撰写文件中启用tty和stdin_open
>使用/ bin / bash命令
> CMD exec vendor / bin / phpunit -D FOREGROUND的变种

我试过一些参考文献:
? – How to Keep Docker Container Running After Starting Services?
? – https://github.com/docker/compose/issues/1926
? – https://github.com/docker/compose/issues/423

真的很感激任何帮助.

谢谢.

最佳答案
所以docker-compose只是docker-engine客户端的替身.它保持与客户端的功能奇偶校验.为了诊断这样的问题,你应该放弃使用docker-compose,直到你使用常规的ole客户端.根据您在此处的评论和其他答案,它听起来好像您没有在前台运行带有守护程序进程的容器.如果要在Docker中运行交互式shell,则必须使用-it标志(-t分配tty和-i启动交互式会话).如果您没有使用这些开关运行Docker,那么您启动交互式shell时容器将无法生存,例如: php -a.

将Docker视为运行进程而非虚拟机的一种奇特方式会有所帮助.在您运行的任何进程(及其子进程)的生命周期之外,不存在某种“环境”.通常,PHP由某些服务器(例如Apache,Nginx等)调用.你在这里暗示的是你需要一个PHP进程来“永久”运行,以便你可以放入容器并测试一些东西.除了交互式shell之外,这是不可能的,并且您需要专门使用-it开关来保持容器中的交互式shell进程处于活动状态.这里真正的答案是你不能做你在这里尝试做的事情(保持PHP容器运行),而不需要在前台监听一些相关的守护进程/服务器进程.原因是因为这不是PHP的工作方式.如果你真的想从PHP映像进入容器,只需在其上插入一个shell:

docker run -it apollo/php /bin/bash

…然后你将从PHP映像中启动一个容器,并在容器上获得一个shell(一旦你退出shell就会死掉).但是,再次,从我的第一段重申,docker-compose不是去这里的方式.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读