Docker Vue容器无法从应用程序访问URL,但可以从容器的bash访问

Docker Vue容器无法从应用程序访问URL,但可以从容器的bash访问,docker,vue.js,docker-compose,Docker,Vue.js,Docker Compose,我有3个不同的容器,如下所示 1.具有Vue SPA的UI容器 2.具有Spring启动应用程序的后端容器 3.MYSql数据库容器 下面是我的docker撰写文件 version: '3' services: mysqldb: image: mysql:latest container_name: mysqldb environment: MYSQL_ROOT_PASSWORD: root MYSQL_DATABASE: simple-bu

我有3个不同的容器,如下所示 1.具有Vue SPA的UI容器 2.具有Spring启动应用程序的后端容器 3.MYSql数据库容器

下面是我的docker撰写文件

version: '3'

services:
  mysqldb:
    image: mysql:latest
    container_name: mysqldb
    environment:
      MYSQL_ROOT_PASSWORD: root
      MYSQL_DATABASE: simple-bug
    ports:
      - "3306:3306"
  simple-bug-back:
    build: ./..
    container_name: simple-bug-back
    ports:
      - "8082:8082"
    restart: on-failure
    depends_on:
      - mysqldb
    environment:
      SPRING_PROFILES_ACTIVE: dev
      SPRING_DATASOURCE_URL: jdbc:mysql://mysqldb/simple-bug
  simple-bug-ui:
    build: ./../ui
    ports:
      - "8080:8080"
    depends_on:
      - simple-bug-back
现在我正在尝试访问

在vue应用程序中,但它给出net::ERR_NAME_未解析,但如果我在容器内尝试相同的方法,即

docker exec -it docker_simple-bug-ui_1 sh
在上面的URL中执行curl命令,我将得到响应


任何人都可以帮助我我缺少了什么

原因是您的主机不知道此域的容器,此域仅在docker compose为容器创建的网络中有效,如果您想使用此域,您应该像这样将其添加到/etc/hosts文件中,因为您已公开端口8082:

127.0.0.1 simple-bug-back

为了解决上述问题,我使用Nginx作为服务器,并使用它的反向代理。在my case/back/中,我使用.env文件将我的所有请求路由到我所有后端调用的特定uri,下面是我的nginx.conf文件

upstream spring_back_8082 {
  server simple-bug-back:8082;
}

server {
  ..
  ..


  location / {
      try_files $uri $uri/ =404;
  }

  location /back/ {
      proxy_pass http://spring_back_8082/;
  }
}

现在要调用后端,我的url是/back/…

同意的,但是如果我想在不将后端暴露于外部网络的情况下进行部署,也就是说,不在简单的bug数据库中使用端口配置,那么是否可以通过任何其他方式来完成