Php 将Laravel Websocker与docker/docker-compose.yml一起使用不起作用
我正在开发一个Laravel应用程序。我正在尝试在我的应用程序中使用Laravel Websocket。我正在使用Docker/Docker-compose.yml。由于Laravel Websocket在端口6001上本地运行,因此我在将其与docker compose集成时遇到问题。搜索解决方案我找到了此链接。我试过了,但没用。这就是我所做的 我在项目根目录下创建了一个名为workspace的文件夹。在那个文件夹中,我创建了一个名为Dockerfile的文件 这是Dockerfile的内容Php 将Laravel Websocker与docker/docker-compose.yml一起使用不起作用,php,laravel,docker,websocket,docker-compose,Php,Laravel,Docker,Websocket,Docker Compose,我正在开发一个Laravel应用程序。我正在尝试在我的应用程序中使用Laravel Websocket。我正在使用Docker/Docker-compose.yml。由于Laravel Websocket在端口6001上本地运行,因此我在将其与docker compose集成时遇到问题。搜索解决方案我找到了此链接。我试过了,但没用。这就是我所做的 我在项目根目录下创建了一个名为workspace的文件夹。在那个文件夹中,我创建了一个名为Dockerfile的文件 这是Dockerfile的内容
EXPOSE 6001
在docker-compose.yml文件中,我添加了此内容
workspace:
port:
- 6001:6001
我的docker-compose.yml文件如下所示
version: "3"
services:
workspace:
port:
- 6001:6001
apache:
container_name: web_one_apache
image: webdevops/apache:ubuntu-16.04
environment:
WEB_DOCUMENT_ROOT: /var/www/public
WEB_ALIAS_DOMAIN: web-one.localhost
WEB_PHP_SOCKET: php-fpm:9000
volumes: # Only shared dirs to apache (to be served)
- ./public:/var/www/public:cached
- ./storage:/var/www/storage:cached
networks:
- web-one-network
ports:
- "80:80"
- "443:443"
php-fpm:
container_name: web-one-php
image: php-fpm-laravel:7.2-minimal
volumes:
- ./:/var/www/
- ./ci:/var/www/ci:cached
- ./vendor:/var/www/vendor:delegated
- ./storage:/var/www/storage:delegated
- ./node_modules:/var/www/node_modules:cached
- ~/.ssh:/root/.ssh:cached
- ~/.composer/cache:/root/.composer/cache:delegated
networks:
- web-one-network
当我运行“docker compose up--build-d”时,它给出了以下错误
ERROR: The Compose file './docker-compose.yml' is invalid because:
Unsupported config option for services.workspace: 'port' (did you mean 'ports'?)
什么地方出了问题,我该如何解决?如何将Laravel Web Socket与docker compose一起使用
我尝试从“端口”更改为“端口”,但收到了以下错误消息
ERROR: The Compose file is invalid because:
Service workspace has neither an image nor a build context specified. At least one must be provided.
你的文件错了。Dockerfile必须以
FROM
指令作为开头。在您的情况下,运行一个现有的php:-cli
映像就足够了,避免了整个Dockerfile内容:
workspace:
image: php:7.3-cli
command: ["php", "artisan", "websockets:serve"]
当然,您还需要添加一个包含应用程序代码和合适网络的卷。如果您在服务前面添加一个反向代理,如Nginx,您也不需要导出
工作区
上的端口
。服务可以访问其他服务,只要它们在同一网络中。您是否尝试将第四行的“端口”更新为“端口”?您好@AhmedAtoui,我刚刚更新了问题,请查看。