Docker Vue容器无法从应用程序访问URL,但可以从容器的bash访问
我有3个不同的容器,如下所示 1.具有Vue SPA的UI容器 2.具有Spring启动应用程序的后端容器 3.MYSql数据库容器 下面是我的docker撰写文件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
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数据库中使用端口配置,那么是否可以通过任何其他方式来完成