我有一个docker compose yml文件,包含3个服务。 Spring Boot REST服务,mysql服务和角度应用程序:
version: '3'
services:
container-mysql:
image: mysql
environment:
MYSQL_ROOT_PASSWORD: mypassword
container_name: container-mysql
container-angular-app:
build: angularjsapp
ports:
- '80:80'
depends_on:
- container-app
container_name: container-angular-app
container-app:
build: ../workspace/ContainerBackendBoot
depends_on:
- container-mysql
ports:
- '8080:8080'
container_name: container-app
我可以通过将application.properties db url设置为
来从我的REST服务连接到我的mysql实例spring.datasource.url=jdbc:mysql://container-mysql:3306/db?createDatabaseIfNotExist=true
但是当我尝试从角度调用我的REST服务时:
var app = angular.module('myApp', []);
app.controller('myCtrl', function ($scope, $http) {
$http({
method: 'GET',
url: 'http://container-app:8080/container'
}).then(function successCallback(response) {
$scope.greeting = response.data;
}, function errorCallback(response) {
$scope.greeting = "Failed to connect to backend. Double check your network.";
});
});
我在Chrome中遇到GET http://container-app:8080/container net :: ERR_NAME_NOT_RESOLVED错误。
为什么我无法使用“container-app”别名从angular连接到我的REST服务?
答案 0 :(得分:0)
需要添加类似这样的内容
链接: - container-app
答案 1 :(得分:0)
您在前端使用角度,然后在浏览器中打开您的网站,然后您无法从浏览器访问容器名称。
如果要在另一个容器中提及容器名称,则必须使用容器名称。例如,当您想在另一个应用容器中使用Redis容器时。
在前端,您必须使用应用中公开的IP和端口。