Loading [MathJax]/jax/input/TeX/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >在使用docker-compose构建应用时,如何在React应用中使用Docker容器名称作为URL端点?

最近我正在使用一个MERN堆栈应用程序。然后我有一个docker-compose.yml,看起来像这样:

代码语言:javascript
运行
AI代码解释
复制
version: "3"

services:
  web:
    build: ./concept.io-frontend
    ports:
      - "80:80"
    depends_on:
      - api
    networks:
      - network.concept.io
    container_name: concept.io
  api:
    build: ./concept.io-backend
    restart: always
    ports:
      - "5328:5328"
    depends_on:
      - db
    networks:
      - network.concept.io
    container_name: api.concept.io
  db:
    image: mongo
    restart: always
    networks:
      - network.concept.io
    container_name: db.concept.io
networks:
  network.concept.io:
    driver: bridge

因此,在后端(Express)代码中,我写道:

代码语言:javascript
运行
AI代码解释
复制
const URL = "mongodb://db.concept.io:27017/conceptio";

module.exports = {
  url: URL,
};

当我声明API容器依赖于Mongo容器时,API容器与Mongo one完美连接。

但当涉及到前端容器时,我复制了相同的设置,该前端容器依赖于API容器,并将"localhost“替换为API和Mongo容器的容器名称。

代码语言:javascript
运行
AI代码解释
复制
// const URL = "http://localhost:5328/";
const URL = "http://api.concept.io:5328/";
export const API_URL = URL + "api/";
export const AUTH_URL = API_URL + "auth/";

但我不能向该端点发出请求。

向Docker容器的同一网络中的另一个容器发出HTTP请求有什么错误或想法吗?

以下是Dockerfiles:

接口:

代码语言:javascript
运行
AI代码解释
复制
FROM node:lts-alpine3.12 as builder
RUN apk add yarn

WORKDIR /opt/app
COPY package.json yarn.lock ./
RUN yarn install
COPY . ./
EXPOSE 5328

CMD ["yarn", "start"] 

前端:

代码语言:javascript
运行
AI代码解释
复制
FROM node:lts-alpine3.12 AS builder
RUN apk add yarn

WORKDIR /opt/web
COPY package.json yarn.lock ./
RUN yarn install

ENV PATH="./node_modules/.bin:$PATH"

COPY . ./
RUN yarn run build

FROM nginx:1.19.1-alpine
RUN apk add curl
RUN curl -L https://github.com/a8m/envsubst/releases/download/v1.2.0/envsubst-`uname -s`-`uname -m` -o envsubst && \
    chmod +x envsubst && \
    mv envsubst /usr/local/bin
COPY ./nginx.config /etc/nginx/nginx.template
EXPOSE 80
CMD ["/bin/sh", "-c", "envsubst < /etc/nginx/nginx.template > /etc/nginx/conf.d/default.conf && nginx -g 'daemon off;'"]
COPY --from=builder /opt/web/dist /usr/share/nginx/html
EN

回答 1

Stack Overflow用户

发布于 2020-08-18 07:26:18

您必须在docker-compose.yml文件中添加虚拟主机

环境: VIRTUAL_HOST: concept.io

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63463677

复制
相关文章
使用Docker-compose编排你的容器
我们都知道使用Dockerfile可以将我们的springboot的应用构造成一个镜像,然后我们通过docker run 或者docker serice create就可以将镜像运行成为一个独立的容器,但是你没有想过一个微服务的应用可是由好多个springboot应用组成的呢,你难道要一个一个run吗一个合格的工程师当然不会让这种重复机械的事情发生第二次,对于这种重复机械的工作我们写一个shell脚本不就好啦把多次run的命令全都放在一个脚本里每次更新我们运行这个脚本就好啦.这么致命的缺陷难道docker就没有发现吗,怎么可能,人家不仅发现啦~还给我们提供了更好用的脚本,那就是接下来要说的docker compose
姜同学
2022/10/27
7120
使用Docker-compose编排你的容器
使用docker-compose部署flask应用
为了让开发环境、测试环境和线上环境统一,使用 docker 镜像部署应用是一个不错的方案。裸用 docker-cli 管理服务过于麻烦,在开发机上 k8s 又凭空增加了很多复杂性,使用 docker-compose 部署应用是一个不错的折中方案。
杜逸先
2023/04/13
6950
使用 docker-compose 打包多个应用
docker file 是 使用 docker 部署应用的命令。 具体的命令可以参考 Docker 命令.
付威
2021/01/28
1.7K0
如何在Ubuntu上使用Traefik作为Docker容器的反向代理
Docker是在生产中运行Web应用程序的有效方法,但您可能希望在同一个Docker主机上运行多个应用程序。在这种情况下,如果只有端口80和443可用,您需要设置反向代理。
林岑影
2018/08/13
2.5K0
如何在Ubuntu上使用Traefik作为Docker容器的反向代理
使用docker-compose部署flask应用
以前部署应用,需要各种环境配置,各种shell操作才能搭建一套可用的服务。现在有了Docker之后,部署方式变了更加容易,不容易出现配置错误,环境不一致问题。解决了在本地环境可以运行,迁移到线上出现各种问题,这些问题大多出现在线上和本地环境有差异,配置容易出现错误等情况。那么docker-compose 和 docker 之间存在着什么联系呢?
子润先生
2021/06/18
2K0
使用 docker-compose 在 Docker 中启动带密码的 Redis
在服务器上使用 docker-compose 启动一个 Docker 中的 Redis 时,配置文件没有生效,Redis 没有加密码,导致 redis 中被写入两条记录:
木制robot
2018/10/09
25.1K2
如何使用nginx作为docker容器中ASP.NET应用的反向代理
ASP.NET是一个Web开发框架,可以让开发者创建动态的Web应用和服务。ASP.NET的一个优点是它可以运行在不同的平台上,比如Windows,Linux和macOS,使用docker容器。Docker是一个软件工具,可以让开发者将应用打包和部署在隔离的环境中。通过使用docker,ASP.NET应用可以轻松地在任何云或本地基础设施上部署和扩展。使用docker与ASP.NET的一个挑战是如何配置托管应用的Web服务器。一个流行的选择是使用nginx作为ASP.NET应用的反向代理。Nginx是一个高性能的Web服务器,可以处理高并发和负载均衡。通过使用nginx作为反向代理,开发者可以提高他们的ASP.NET应用的安全性,性能和可靠性。要使用nginx作为反向代理,开发者需要配置nginx.conf文件,指定运行在docker容器中的ASP.NET应用的位置和端口。
jackcode
2023/03/30
9970
如何使用nginx作为docker容器中ASP.NET应用的反向代理
ASP.NET Core使用Docker-Compose实现多容器应用部署
ASP.NET Core使用Docker-Compose容器编排实现多容器应用部署
跟着阿笨一起玩NET
2019/09/30
1.4K0
ASP.NET Core使用Docker-Compose实现多容器应用部署
使用Docker容器构建ODL集群
作者简介:智智方,西安电子科技大学硕士研究生,主要研究方向是SDN与网络安全,邮箱675520574@qq.com
SDNLAB
2018/11/30
1.3K0
使用Docker容器构建ODL集群
如何在Ubuntu 18.04上使用Traefik作为Docker容器的反向代理
Docker可以是在生产中运行Web应用程序的有效方法,但您可能希望在同一个Docker主机上运行多个应用程序。在这种情况下,您需要设置反向代理,因为您只想公开端口80和443。
风研雨墨
2018/11/15
2.3K0
Kubernetes 1.24 1.25 集群使用docker作为容器
在新版本Kubernetes环境(1.24以及以上版本)下官方不在支持docker作为容器运行时了,若要继续使用docker 需要对docker进行配置一番。需要安装cri-docker作为Kubernetes容器
小陈运维
2022/09/02
1.6K0
Docker折腾记: (2)基于docker-compose构建yapi容器
这篇主要是用docker-compose来编排我们第一篇的内容,顺便谈谈docekr-compose的好处
CRPER
2018/08/28
1.3K0
Docker折腾记: (2)基于docker-compose构建yapi容器
如何在使用 Flutter时切换应用时隐藏应用预览
如果您要显示敏感数据,例如。钱包金额,或者只是当登录表单显示插入的密码清晰时(想想眼睛图标..),当您不在应用程序中时,您必须隐藏敏感数据。
徐建国
2022/06/24
2.2K0
如何在使用 Flutter时切换应用时隐藏应用预览
使用docker-compose编排前后端分离应用
重装了波系统(Windows 2004 版本),这个版本下,Docker Desktop 是以 WSL2 为 backend 的,不用 Hyper -V 了,舒服了很多。
Cloud-Cloudys
2020/07/06
1.4K0
docker-compose 使用介绍
Docker-Compose项目是Docker官方的开源项目,负责实现对Docker容器集群的快速编排。Compose允许用户通过一个单独的docker-compose.yml模板文件(YAML 格式)来定义一组相关联的应用容器为一个项目(project)。Docker-Compose项目由Python编写,调用Docker服务提供的API来对容器进行管理。因此,只要所操作的平台支持Docker API,就可以在其上利用Compose来进行编排管理。
大江小浪
2020/04/16
1.2K0
Rasa 聊天机器人专栏(八):在Docker上运行Rasa
这是如何使用Docker构建Rasa助手的指南。如果你之前没有使用过Rasa,我们建议你先Rasa教程开始。
磐创AI
2020/03/04
5.8K0
Docker-compose(容器编排)
Compose 是 Docker 公司推出的一个工具软件,可以管理多个 Docker 容器组成一个应用。你需要定义一个 YAML 格式的配置文件docker-compose.yml, 写好多个容器之间的调用关系。然后,只要一个命令,就能同时启动/关闭这些容器。
鱼找水需要时间
2023/02/16
1.2K0
Docker-compose(容器编排)
Docker-compose容器编排
docker建议我们每一个容器中只运行一个服务,因为docker容器本身占用资源极少,所以最好是将每个服务单独的分割开来,但是这样我们又面临了一个问题。
害恶细君
2022/11/22
9110
Docker-compose容器编排
Docker-compose容器编排
Compose 是 Docker 公司推出的一个工具软件,可以管理多个 Docker 容器组成一个应用。你需要定义一个 YAML 格式的配置文件docker-compose.yml,写好多个容器之间的调用关系。然后,只要一个命令,就能同时启动/关闭这些容器
一个风轻云淡
2022/11/15
5320
Docker-compose容器编排
.NET Core容器化之多容器应用部署@Docker-Compose
1.引言 紧接上篇.NET Core容器化@Docker,这一节我们先来介绍如何使用Nginx来完成.NET Core应用的反向代理,然后再介绍多容器应用的部署问题。 2. Why Need Nginx .NET Core中默认的Web Server为Kestrel。 Kestrel is great for serving dynamic content from ASP.NET, however the web serving parts aren’t as feature rich as ful
圣杰
2018/01/11
1.8K0
.NET Core容器化之多容器应用部署@Docker-Compose

相似问题

如何在docker-compose文件中使用url作为图像名称

111

如何使用容器名称与docker-compose连接容器?

255

docker-compose up和docker-compose exec不使用相同的容器名称

13

使用服务名在docker-compose React容器中调用django容器中的API

110

如何在容器出现故障时使用docker-compose重启docker容器

114
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档