像 URL 一样访问 docker 容器

我有一个使用 PHP、Nginx 和 dynamodb 开发的应用程序。我创建了一个简单的 docker-compose 来在本地工作。


version: '3.7'


services:

  nginx_broadway_demo:

    container_name: nginx_broadway_demo

    image: nginx:latest

    ports:

      - 8080:80

    volumes:

      - ./www:/var/www

      - ./docker/nginx/vhost.conf:/etc/nginx/conf.d/default.conf

      - ./docker/nginx/nginx.conf:/etc/nginx/nginx.conf

    links:

      - php_fpm_broadway_demo


  php_fpm_broadway_demo:

    container_name: php_fpm_broadway_demo

    build:

      context: ./docker/php

    ports:

      - 9000:9000

    volumes:

      - .:/var/www/web


  dynamodb:

    image: amazon/dynamodb-local

    ports:

      - 8000:8000

    expose:

      - 8000

现在我需要添加 dynamodb URL 参数以允许 PHP 查询数据库。因此,如果我从 PHP docker 容器进行 ping,这样就可以正常工作:


ping dynamodb

这是行不通的。


ping http://dynamodb:8000

我需要使用 http://dynamodb:8000 因为 AWS 需要 URI,因为如果我使用 http://dynamodb:8000 就会出现此错误:


Endpoints must be full URIs and include a scheme and host

那么:如何像 URL 一样调用 docker 容器呢?我尝试过使用 docker-compose 参数,例如:depends, links,network没有成功


红糖糍粑
浏览 96回答 1
1回答

月关宝盒

当依赖项安装在主机上并在容器内部用作底层平台上的作曲家工作基础时,就会出现错误。因此我们调查发现该问题是由于上述原因造成的。安装dependency在容器内可以解决问题。docker exec -it php bash -c "cd web; composer install"
打开App,查看更多内容
随时随地看视频慕课网APP