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

时间:2020-06-11 12:37:53

标签: docker vue.js docker-compose

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

下面是我的docker-compose文件

id title       description    gtin ......
20 product 1   g:description  xxxx .....

现在我正在尝试访问

http://simple-bug-back:8082

在vue应用程序中,但它给出的是net :: ERR_NAME_NOT_RESOLVED,但如果我在容器中尝试相同的操作,即

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

在上面的URL中执行curl命令,我得到响应

谁能帮我我在想什么

2 个答案:

答案 0 :(得分:1)

原因是因为您的主机不知道该域的容器,所以该域仅在docker-compose为容器创建的网络中有效,如果要使用此域,则应将其添加到/ etc /主机文件是这样的(因为您已经暴露了端口8082):

127.0.0.1 simple-bug-back

答案 1 :(得分:0)

为解决上述问题,我使用Nginx作为服务器(https://vuejs.org/v2/cookbook/dockerize-vuejs-app.html),并使用了它的反向代理。我使用.env文件将所有后端调用(以我的情况为/ back /)的所有请求都路由到特定uri,以下是我的nginx.conf文件

$scope

现在可以调用后端了,我的网址是/ back /...