微服务:docker.compose 文件中的 ESHOP_OCELOT_VOLUME_SPEC 行是啥意思

Posted

技术标签:

【中文标题】微服务:docker.compose 文件中的 ESHOP_OCELOT_VOLUME_SPEC 行是啥意思【英文标题】:Microservices: What is the ESHOP_OCELOT_VOLUME_SPEC line mean in docker.compose file微服务:docker.compose 文件中的 ESHOP_OCELOT_VOLUME_SPEC 行是什么意思 【发布时间】:2018-12-21 09:07:50 【问题描述】:

我正在查看 docker-compose.override.yml 下 eShopOnContainer 中的代码。我可以看到一行

卷: - ./src/ApiGateways/Web.Bff.Shopping/apigw:$ESHOP_OCELOT_VOLUME_SPEC:-/app/configuration

webshoppingapigw:
    environment:
      - ASPNETCORE_ENVIRONMENT=Development
      - IdentityUrl=http://identity.api              #Local: You need to open your local dev-machine firewall at range 5100-5110.
    ports:
      - "5202:80"   
    volumes:
      - ./src/ApiGateways/Web.Bff.Shopping/apigw:$ESHOP_OCELOT_VOLUME_SPEC:-/app/configuration

$ESHOP_OCELOT_VOLUME_SPEC .. 卷中的行是什么?我认为它会创建大量的东西,但 $ESHOP_OCELOT_VOLUME_SPEC ......我看不到它在项目中定义的位置,即使不在 .env 文件中。

当我进入 docker-compose.override.prod 时,$ESHOP_OCELOT_VOLUME 行甚至都不在那里。

目前我在运行示例代码时遇到异常,因此我尝试遵循 eShopOnContainer 中的代码,但编写了一个简单的版本,以便我可以轻松地遵循。我开始做 ApiGateway 并从那里开始构建。

我不知道这个问题是否可以被问到。这里的人对这个问题很模糊。

【问题讨论】:

P.S.我不是架构师,甚至不是高级开发人员,我只是初级水平。我无法运行 eShopOnContainer,甚至在浏览器上发布了异常,但没有得到任何响应,导致先前的问题被否决,因为要求有一个更简单的教程版本可供试用。该问题已被删除。 【参考方案1】:
volumes: - ./src/ApiGateways/Web.Bff.Shopping/apigw:$ESHOP_OCELOT_VOLUME_SPEC:-/app/configuration

意思是:

./src/ApiGateways/Web.Bff.Shopping/apigw挂载到$ESHOP_OCELOT_VOLUME_SPEC提到的路径

如果$ESHOP_OCELOT_VOLUME_SPEC(未定义),则将/app/configuration 用作挂载路径。

这使用户有机会通过他/她选择的路径覆盖默认路径。

docker run -e ESHOP_OCELOT_VOLUME_SPEC=/my/path ...

【讨论】:

哦,有道理,谢谢...我之前用过docker命令没意识到【参考方案2】:

ESHOP_OCELOT_VOLUME_SPEC 这是一个环境变量。变量值可以在代码的某个位置或实例中导出/设置。 ESHOP_OCELOT_VOLUME_SPEC 将被替换为值,这就是为什么您无法在 docker 中看到 ESHOP_OCELOT_VOLUME_SPEC 而不是 ESHOP_OCELOT_VOLUME_SPEC 中的值。

【讨论】:

以上是关于微服务:docker.compose 文件中的 ESHOP_OCELOT_VOLUME_SPEC 行是啥意思的主要内容,如果未能解决你的问题,请参考以下文章

使用 Eureka 和 traefik 和 docker compose 的微服务服务发现

关于docker那点事儿——docker compose简介

Docker Compose 项目打包部署

docker-compose部署微服务

使用 docker-compose 和 traefik 实现微服务之间的通信

使用Docker Compose编排微服务