docker - 想在 docker 中用 Laravel 应用程序运行 elasticsearch,但它不起作用
问题描述
我有位于 docker 中的 laravel 应用程序,我想将 elasticsearch 集成到我的应用程序中 这就是我的 docker-compose.yaml 的外观
version: '3'
services:
laravel:
build: ./docker/build
container_name: laravel
restart: unless-stopped
privileged: true
ports:
- 8084:80
- "22:22"
volumes:
- ./docker/settings:/settings
- ../2agsapp:/var/www/html
# - vendor:/var/www/html/vendor
- ./docker/temp:/backup
- composer_cache:/root/.composer/cache
environment:
- ENABLE_XDEBUG=true
links:
- mysql
mysql:
image: mariadb:10.2
container_name: mysql
volumes:
- ./docker/db_config:/etc/mysql/conf.d
- ./db:/var/lib/mysql
ports:
- "8989:3306"
environment:
- MYSQL_USER=dev
- MYSQL_PASSWORD=dev
- MYSQL_ROOT_PASSWORD=root
- MYSQL_DATABASE=laravel
command: --innodb_use_native_aio=0
phpmyadmin:
container_name: pma_laravel
image: phpmyadmin/phpmyadmin:latest
environment:
- MYSQL_USER=dev
- MYSQL_ROOT_PASSWORD=root
- MYSQL_PASSWORD=dev
- MYSQL_DATABASE=laravel
- PMA_HOST=mysql
ports:
- 8083:80
links:
- mysql
es:
image: docker.elastic.co/elasticsearch/elasticsearch:7.10.1
ports:
- "9200:9200"
- "9300:9300"
environment:
- discovery.type=single-node
volumes:
storage:
composer_cache:
我运行docker-compose up -d
然后遇到了非常奇怪的问题如果我curl localhost:9200
在 laravel 容器中执行它会返回此消息Failed to connect to localhost port 9200: Connection refused
但是如果我将用完 dockercurl localhost:9200
它会返回预期的响应
也许我不明白它是如何工作的,希望有人能帮助我
解决方案
当您想访问某个容器中的另一个容器时,您应该使用容器名称,而不是localhost
.
如果您在内部laravel
并想要访问 Elasticsearch,您应该:
curl es:9200
由于您将 9200 端口映射到 localhost(ports
docker-compose 中的部分),因此该端口也可从您的本地计算机获得,这就是从本地计算机卷曲到 9200 有效的原因。
推荐阅读
- python - Python3 - 使用 matplotlib.pyplot.fill_between 时出错
- android - 在导航架构组件中禁用将片段添加到后台堆栈
- angular - Angular ng-content 正在丢失换行符。如何保持换行符完好无损?
- python - python psycopg2查询错误时间戳没有时区
- linux - Perl 正则表达式以递归方式替换多个文件组中的字符串,例如“*.php”“*.html”
- reactjs - React Native Android - Promise.all 为一组 promise 抛出 [TypeError: [object Object] is not iterable!]
- python - Python apache beam ImportError:数据流工作程序上没有名为 *** 的模块
- c# - 如何创建超过八个值的 ValueTuple 列表?
- .net - IIS 应用程序池回收 - 尝试第一次连接到 sql server 时出现超时
- listview - 如何防止列表视图在 item.count 更改时跳转到选定/焦点行?