Docker撰写链接(别名)

Mer*_*cer 1 angularjs docker dockerfile docker-compose

我在后端有一个Angularjs前端和一个Spring-Boot Rest API.我创建了两个Docker

DockerFile Front:

FROM httpd:2.4
COPY ./public-html/ /usr/local/apache2/htdocs/
Run Code Online (Sandbox Code Playgroud)

DockerFile返回:

FROM tomcat:8.0
EXPOSE 8080
COPY rest-api.war /usr/local/tomcat/webapps/rest-api.war
Run Code Online (Sandbox Code Playgroud)

我有一个Docker-Compose文件,我已经定义了Alias

多克尔 - 撰写:

rest:
 image: restapi
 container_name: restapi
 ports:
  - "8080:8080"


frontend:
 image: frontend
 container_name: frontend
 ports:
  - "80:80"
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述baseURL在我的AngularJs控制器中重新定义

app.controller('MainCtrl', function ($scope, $location, $http, MainService) {
    var that = this;
    var baseUrl = 'http://rest:8080';
Run Code Online (Sandbox Code Playgroud)

当我lauchn我的应用程序在控制台中我有这个

错误:

GET http://rest:8080/category net::ERR_NAME_NOT_RESOLVED
Run Code Online (Sandbox Code Playgroud)

其他容器中的hosts文件不会自动更新 在此输入图像描述 怎么了 ?

******更新******

我创建了一个网络

$docker network create my-network
Run Code Online (Sandbox Code Playgroud)

我重新定义了我的docker-compose文件

连接到该网络的容器到达其他容器.

所以我有同样的错误.

当我在Kitematic中看到我的后端有这样的ip:

在此输入图像描述

当我在主机文件中看到ip不一样时.

在此输入图像描述

当我用Kitematic的IP修改我的控制器时所有工作,但当我使用别名不起作用

arv*_*ahl 5

所以你试图在浏览器(Angular)应用程序中使用链接别名?Docker仅将这些别名公开给容器.您的本地开发系统位于docker网络之外,不会将这些添加到主机文件中,因此无法将主机解析为IP.

在容器内运行的任何应用程序(如Node.js后端)都可以使用这些别名.浏览器不能.