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