Угловой интерфейс, для Apas Flask, все внутри докер - PullRequest
0 голосов
/ 05 января 2019

У меня есть проблема с Angular и Flask внутри Docker.

Угловая ссылка на приложение Flask внутри докера, но когда я хочу сделать http-запросы к API из Angular, возвращается ошибка.

Ошибка изображения

Мой сервис Angular для выполнения запросов.

import { Injectable } from '@angular/core';
import { HttpClient, HttpHeaders,Response } from '@angular/common/http';

import { Observable, of } from 'rxjs';
import { catchError, map, tap } from 'rxjs/operators';
import {User} from './user';

const httpOptions = {
  headers: new HttpHeaders({ 'Content-Type': 'application/json' })
};


@Injectable({providedIn: 'root'})
export class LoginService {
  private loginUrl = "http://waiter_flask_1:5000/api/account/login";


  constructor(
    private http:HttpClient
  ) { }


  loginUSer(): Observable<any> {
    return this.http.post(this.loginUrl,{"username":"test","password":"test"},httpOptions).pipe(
      map((response:Response)=>response)

    );
  }



}

Мой докер-compose.yml

version: '3.3'

services:
  flask:
    image: flask
    ports:
      - "5000:5000"
    volumes:
      - ./run.py:/app/run.py
      - ./api:/app/api
    links:
      - database:waiter_database_1


  angular:
    image: angular
    ports:
      - "4200:4200"
    volumes:
      - ./docker-angular:/usr/src/app
    links:
      - flask:waiter_flask_1

Как я могу решить эту проблему?

1 Ответ

0 голосов
/ 06 января 2019

Когда вы делаете запрос из приложения Angular, ваш браузер делает запрос, а не контейнер angular. Поэтому ваш хост-компьютер, с которого вы запускаете браузер, попытается разрешить хост http://waiter_flask_1:5000, а не angular container, and since your host cannot resolve the name waiter_flask_1`, запрос не будет выполнен.

Вам нужно заменить URL-адрес, используемый вашим угловым приложением для выполнения HTTP-запроса, на URL-адрес, который ваш хост может обработать, например:

http://host.ip.address:5000/api/account/login

где host.ip.address - это IP-адрес хоста, на котором запущен контейнер flask. Например, если вы запускаете контейнер flask на том же хосте, к которому обращаетесь к своему браузеру, тогда ваш URL может указывать на localhost, например:

http://127.0.0.1:5000/api/account/login
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...