【问题标题】:Symfony app in Docker doesn't workDocker 中的 Symfony 应用程序不起作用
【发布时间】:2017-04-19 12:54:07
【问题描述】:

我在 Symfony 中使用 MongoDB 创建了一个应用程序,并将其添加到 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" ]

入口点.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

【问题讨论】:

    标签: mongodb symfony docker docker-compose


    【解决方案1】:

    您应该从您的Dockerfile 中删除CMD ['echo', 'hello'],这是作为参数传递给您的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

    【讨论】:

    • 我添加了 entrypoint.sh 和 symfony_environment.sh 文件。内容好吗?
    • 他不应该在构建之后用docker-compose up 而不是docker run 来提供服务吗? web_server 的端口映射看起来也很奇怪......
    • 很好,@RenanTaranto - 端口映射不正确
    • 我修改了文件,现在我收到了消息:web_server_1 | _init_linux.go:178: exec user process caused "no such file or directory" 在命令 docker-compose up 之后。我用实际文件更新了帖子。
    • 我尝试将exec 放在entrypoint.sh 文件的第3 行=> exec php -S 0.0.0.0:8000。但结果是一样的。我做错了什么?
    猜你喜欢
    • 1970-01-01
    • 2017-05-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-03-14
    • 1970-01-01
    • 2020-02-18
    相关资源
    最近更新 更多