Playframework Docker编写守护进程正在退出

Playframework Docker编写守护进程正在退出,playframework,docker,Playframework,Docker,因此,我将Play框架与Docker一起使用(特别是使用image),并尝试启动并运行服务器 做 $ sudo docker-compose run web activator run 正如预期的那样工作:Web服务器启动并保持运行以接受传入的请求 但是我试着 $ sudo docker-compose up -d 及 它退出了!为什么呢?为什么它不能像我运行docker compose时一样运行 编辑--Mydocker compose.yml文件 database: image: p

因此,我将Play框架与Docker一起使用(特别是使用image),并尝试启动并运行服务器

$ sudo docker-compose run web activator run
正如预期的那样工作:Web服务器启动并保持运行以接受传入的请求

但是我试着

$ sudo docker-compose up -d

它退出了!为什么呢?为什么它不能像我运行docker compose时一样运行

编辑--My
docker compose.yml
文件

database:
  image: postgres:9.1
  volumes:
    - /ShallWeDebate/postgres-entrypoint:/docker-entrypoint-initdb.d:ro
  env_file:
    - ./vars.env
web:
  image: ingensi/play-framework
  volumes:
    - /ShallWeDebate:/app:rw
  env_file:
    - ./vars.env
  links:
    - database
  ports:
    - "80:9000"

这个问题与Play框架有关。当使用激活器运行应用程序时,它会尝试连接到stdin,等待Ctrl+D完成应用程序。Play Framework目前不支持使用
activator
命令运行应用程序而不使用stdin。您找到了一个解决方法来让它工作(从交互式docker容器运行您的应用程序)。也许你可以让它与fig黑客一起工作一点,以某种方式分配一个伪tty,但是最好的解决方案是Play框架支持这个特性。与此特定问题相关的问题有:,

如果您想要在开发模式而不是生产模式下使用Play应用程序的解决方案,可以将
stdin\u open:true
设置添加到
docker compose.yml
文件中:

web:  
  image: brikis98/ping-play
  ports:
    - "9000:9000"
  stdin_open: true

在上面的示例中,
brikis98/ping play
图像是默认情况下执行
activator run
的播放应用程序。如果我在上面的YAML文件上运行
docker compose up
,Play应用程序将启动并继续运行,而不是立即退出。

请,您可以发布您的
docker compose.yml
(或使用的yml)吗?@JavierCortejoso完成了,有帮助吗?在生产模式下运行Play似乎也解决了这个问题。谢谢
web:  
  image: brikis98/ping-play
  ports:
    - "9000:9000"
  stdin_open: true