Docker中的Symfony应用程序无法运行

时间:2017-04-19 12:54:07

标签: mongodb symfony docker docker-compose

我使用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

1 个答案:

答案 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项目创建了一个模板,值得一试。我始终坚持最新的最佳实践。

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