Docker中的Symfony应用程序不起作用

我使用MongoDB在Symfony中创build了一个应用程序,并在Docker镜像中添加了这个应用程序。

MongoDB的图像适用于消息: 2017-04-19T12:47:33.936+0000 I NETWORK [initandlisten] waiting for connections on port 27017

但是,应用程序的图像不工作我收到的消息:

 stdin: is not a tty hello 

当我调用指令时: docker run docker_web_server:latest

我用这个docker-compose文件:

 web_server: build: web_server/ ports: - 5000:5000 links: - mongo tty: true environment: SYMFONY__MONGO_ADDRESS: mongo SYMFONY__MONGO_PORT: 27017 mongo: image: mongo:3.0 container_name: mongo command: mongod --smallfiles expose: - 27017 

和Dockerfile的应用程序是:

 FROM ubuntu:14.04 ENV DEBIAN_FRONTEND noninteractive RUN apt-get update && apt-get install -y \ git \ curl \ php5-cli \ php5-json \ php5-intl RUN curl -sS https://getcomposer.org/installer | php RUN mv composer.phar /usr/local/bin/composer ADD entrypoint.sh /entrypoint.sh ADD ./code /var/www WORKDIR /var/www #RUN chmod +x /entrypoint.sh ENTRYPOINT [ "/bin/bash", "/entrypoint.sh" ] 

entrypoint.sh

 #!/bin/bash rm -rf /var/www/app/cache/* exec php -S 0.0.0.0:8000 # This will run a web-server on port 8000 

问题是什么?

我打电话错误的docker图像服务器?

我希望有这样的信息:

  [OK] Server running on http://127.0.0.1:8000 

你应该从你的Dockerfile删除CMD ['echo', 'hello'] ,这是否作为parameter passing给你的ENTRYPOINT

您还应该将tty: true添加到您的服务定义web-server

我希望entrypoint.sh结束时运行php -S 0.0.0.0:8000 。 请张贴进一步的build议。 如果你使用php -S内部的话,用exec作为前缀来让它作为主进程来接pipe。

自添加新信息后编辑:

我会修改entrypoint.sh到:

 #!/bin/bash rm -rf /var/www/app/cache/* php -S 0.0.0.0:8000 # This will run a web-server on port 8000 

我摆脱了symfony_environment.sh ,而是将以下添加到您的Web服务器服务:

 environment: SYMFONY__MONGO_ADDRESS: mongo SYMFONY__MONGO_PORT: 27017 

作为一个侧面说明,我贡献了一个名为boilr的项目,生成样板,就像这样。 我甚至为php / docker-compose项目创build了一个模板,值得一试。 我始终保持最新的最佳做法。

https://github.com/rawkode/boilr-docker-compose-php