我想使用docker-compose将php和几个数据库(orientdb,neo4j等)组合在一起。然后进入php容器并使用shell执行命令。
单独来说,我的所有容器都运行得很好,当我将它们组合在一起时,它们也都能正常运行。然而,我无论如何都无法弄清楚如何保持php容器的活动状态,以便我可以进入其中进行测试。
为了简单起见,我只会使用一个数据库:orient-db。
我的docker-compose.yml文件:
我的 "php" Dockerfile:
单独来说,我的所有容器都运行得很好,当我将它们组合在一起时,它们也都能正常运行。然而,我无论如何都无法弄清楚如何保持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-compose up
,然后在另一个终端中运行docker attach
- 在我的compose文件中启用
tty
和stdin_open
- 使用
/bin/bash
命令 - 尝试了不同的
CMD exec vendor/bin/phpunit -D FOREGROUND
变体
我还尝试了一些参考资料:
docker logs <容器名称>
时,我只得到了交互式 Shell
。容器正在正确构建,但一旦完成就立即退出。我需要一个保持其开启的命令。我尝试了 @tfg 的答案,但目前还没有成功。 - Apollophp:5.6-apache
镜像,因为它默认运行Apache进程并且不会退出。 - Jānis Elmeris