我使用MongoDB在Symfony中创建了一个应用程序,并在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 image调用了错误的服务器?
我希望收到消息:
[OK] Server running on http://127.0.0.1:8000
答案 0 :(得分:2)
您应该从CMD ['echo', 'hello']
中移除Dockerfile
,将其作为参数传递给ENTRYPOINT
您还应将tty: true
添加到服务定义web-server
我希望entrypoint.sh
最后运行php -S 0.0.0.0:8000
。请发布以获得进一步的建议。如果您在其中使用php -S
,请在其前面添加exec
,以使其作为主要流程接管。
我将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
,而是将以下内容添加到您的网络服务器服务中:
environment:
SYMFONY__MONGO_ADDRESS: mongo
SYMFONY__MONGO_PORT: 27017
作为旁注,我参与了一个名为boilr
的项目,它可以生成像这样的样板。我甚至为php / docker-compose项目创建了一个模板,值得一试。我始终坚持最新的最佳实践。