首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Docker编写服务通信

Docker编写服务通信
EN

Stack Overflow用户
提问于 2019-09-04 23:35:31
回答 1查看 169关注 0票数 1

所以我有一个包含3个服务的docker-compose文件:后端、react前端和mongo。

后端Dockerfile:

代码语言:javascript
复制
FROM ubuntu:latest
WORKDIR /backend-server
COPY ./static/ ./static
COPY ./config.yml ./config.yml
COPY ./builds/backend-server_linux ./backend-server
EXPOSE 8080
CMD ["./backend-server"]

前端Dockerfile:

代码语言:javascript
复制
FROM nginx:stable
WORKDIR /usr/share/nginx/html
COPY ./build .
COPY ./.env .env
EXPOSE 80
CMD  ["sh", "-c", "nginx -g \"daemon off;\""]

所以我想没什么不寻常的。

docker-compose.yml:

代码语言:javascript
复制
version: "3"

services:
    mongo-db:
        image: mongo:4.2.0-bionic
        container_name: mongo-db
        volumes:
            - mongo-data:/data
        network_mode: bridge

    backend:
        image: backend-linux:latest
        container_name: backend
        depends_on:
            - mongo-db
        environment:
            - DATABASE_URL=mongodb://mongo-db:27017
            ..etc
        network_mode: bridge
        # networks: 
        #     - mynetwork
        expose:
            - "8080"
        ports:
            - 8080:8080
        links:
            - mongo-db:mongo-db
        restart: always

    frontend:
        image: frontend-linux:latest
        container_name: frontend
        depends_on:
            - backend
        network_mode: bridge
        links:
            - backend:backend
        ports:
            - 80:80
        restart: always

volumes:
    mongo-data:
        driver: local

这是有效的。我的问题是,通过将ports: - 8080:8080添加到后端部分,主机就可以使用该服务器了。理论上,网络应该可以在没有这些行的情况下工作,就像我在docker docs和this question中读到的那样,但是如果我删除它,API调用就会停止工作(但是在前端服务下用docker-compose编写的curl调用仍然可以工作)。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-09-04 23:38:34

您的react前端正在从浏览器发出请求。因此端点,在这种情况下,你的API需要能够被浏览器访问,而不是分发静态js、css和html文件的容器。

希望这张图片有一定的意义。

附注:如果您不想特别公开API,您可以让Web服务器将请求代理到/ API /到API容器,这将在网络级别发生,这意味着您只需要公开一台服务器。

为此,我在Nginx之外提供我的Angular应用程序,然后将/app1/api/*的代理流量发送到一个容器,将/app2/api/*发送到另一个容器,等等

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

https://stackoverflow.com/questions/57791697

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档