【发布时间】:2019-11-05 13:40:10
【问题描述】:
我有两张简单的图片:
#Angular image
FROM node:12.2.0
WORKDIR /app
ENV PATH /app/node_modules/.bin:$PATH
COPY package.json /app/package.json
RUN npm install
RUN npm install -g @angular/cli@7.3.9
COPY . /app
CMD ng serve
&
# Java spring (REST) image
FROM openjdk:8-jdk-alpine
VOLUME /tmp
COPY ./target/api-0.0.1-SNAPSHOT.jar app.jar
ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar", "app.jar"]
还有我的 docker-compose:
version: '3'
services:
web_app_speech:
image: web_app_speech
restart: always
ports:
- "4300:4200"
depends_on:
- api_speech_docker
api_speech_docker:
image: api_speech_docker
ports:
- "8080:8080"
restart: always
$> 码头工人ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
15c719d31861 web_app_speech "/bin/sh -c 'ng serv…" 9 minutes ago Up 9 minutes 0.0.0.0:4300->4200/tcp azure_web_app_speech_1
044fd15f07e4 api_speech_docker "java -Djava.securit…" 10 minutes ago Up 9 minutes 0.0.0.0:8080->8080/tcp azure_api_speech_docker_1
我可以从 localhost:8080 访问我的 REST API,从 localhost:4300 访问我的 Web 应用程序没有问题,但是当我尝试从我的 web_app 调用我的 rest_api 时,出现以下错误:
OPTIONS http://api_speech_docker:8080/speech net::ERR_NAME_NOT_RESOLVED
我不知道如何解决这个问题,如果您需要更多日志告诉我!
谢谢你的帮助????
【问题讨论】:
-
如果 Web 应用程序在浏览器中运行,则不知道存在 Docker 主机名。您需要使用服务器的主机名和发布的端口。
-
“Shell”进入您的 web_app_speech 容器(docker exec -it ContainId sh)并尝试 ping 另一个容器:“ping api_speech_docker”。那应该行得通。但是,您可能希望在撰写文件中定义一个“网络”。
-
@DavidMaze 嗨,谢谢你的回复,你能更准确吗?我需要将我的 API 调用的 url 更改为 'localhost:8087' 之类的东西?
-
@JoeG 您好,感谢您的回复。我可以毫无问题地从我的 web_app ping 我的 api。我之前定义了一个简单的网络(没有配置),它没有工作。
-
对不起,我应该建议,如果您可以从 webapp 容器中成功 ping,那么您应该尝试从那里“卷曲”http 地址(您可能需要在容器中安装 curl,您可以从命令行执行此操作,但可能需要使用 -u0 开关进行 shell)。使用 curl -v 。并发布结果
标签: java angular docker http docker-compose