我有3个不同的容器,如下所示 1.具有Vue SPA的UI容器 2.具有Spring Boot应用程序的后端容器 3. MYSql数据库容器
下面是我的docker-compose文件
id title description gtin ......
20 product 1 g:description xxxx .....
现在我正在尝试访问
在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命令,我得到响应
谁能帮我我在想什么
答案 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 /...