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了一个模板,值得一试。 我始终保持最新的最佳做法。