如何解决使用docker-compose构建应用程序时,如何在React应用程序中使用Docker容器名称作为URL端点?
最近我正在使用MERN堆栈应用程序。然后我有一个docker-compose.yml像这样:
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
因此,在后端(快速)代码中,我写道:
const URL = "mongodb://db.concept.io:27017/conceptio";
module.exports = {
url: URL,};
当我声明API容器依赖于Mongo容器时,API容器与Mongo完美连接。
但是,对于前端容器,我重现了相同的设置,该前端容器取决于API容器,并用容器名称替换“ localhost”作为API和Mongo。
// 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请求是否有任何错误或想法?
以下是Dockerfile:
API:
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"]
前端:
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
解决方法
您必须在docker-compose.yml中添加虚拟主机
环境: VIRTUAL_HOST:concept.io
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。