【问题标题】:Access to docker container like an URL像 URL 一样访问 docker 容器
【发布时间】:2020-06-29 05:40:21
【问题描述】:

我有一个使用 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 参数,例如:dependslinksnetwork,但没有成功

【问题讨论】:

  • ping http://dynamodb:8000 - 这对任何方案或端口都不起作用,因为您 ping 主机,而不是端口,绝对不是 http。
  • 好的,那么我该如何解决需要完整 URI 并包含方案和主机的 aws 问题?我认为这是可能的,但现在我不知道该怎么做。
  • 您的 PHP 应用程序应该能够在 http://dynamodb:8000 上与 Dynamo 通信。见docs.aws.amazon.com/amazondynamodb/latest/developerguide/…
  • 我不用部署应用,我现在需要在本地工作。
  • 我们可以把它移到聊天中吗?我可能对你们有一些想法

标签: php amazon-web-services docker docker-compose amazon-dynamodb


【解决方案1】:

正如聊天中所讨论的,当依赖项安装在主机上并在容器内以composer work base on the underlying platform 使用时,就会出现错误。

因此我们调查该问题是由于上述原因造成的。在容器内安装 dependency 可解决此问题。

docker exec -it php bash -c "cd web; composer install"

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-07-12
    • 2016-05-05
    • 2023-03-03
    • 2019-06-13
    • 1970-01-01
    • 2022-11-16
    • 2021-03-04
    • 2021-12-08
    相关资源
    最近更新 更多