Wpis z mikrobloga

Znajdzie się tutaj jakiś kozak od spraw devopsowych/angular/docker/docker-compose? Za rozwiązanie problemu stawiam budżetową pizzę (,)

Mam bardzo nietypowy problem, przeszukałem pół internetu i nic nie znalazłem.

Ogólnie problem polega na tym, że:

Buduje sobie obraz angularowy za pomocą dockerfile:

FROM node:10-alpine as build-stage
WORKDIR /app
COPY ./package.json ./package-lock.json /app/
RUN npm install
COPY . /app

RUN npm run build:ssr

# stage 2
FROM node:10-alpine

WORKDIR /app
# Copy dependency definitions
COPY --from=build-stage /app/package.json /app

# Get all the code needed to run the app
COPY --from=build-stage /app/dist /app/dist

ADD ./build.js /app

CMD ["/bin/sh", "-c", "node build.js && npm run serve:ssr"]

Wszystko jest cacy obraz sie buduje i wlatuje do dockera.

Teraz tak:
Jeżeli uruchomię obraz za pomocą docker-compose i wskażę pod jakim portem ma działać aplikacja np "ports: - 4200:4200" Wszystko działa cacy i ssr działa normalnie aplikacja wystawia się pod adresem localhost:4200.

Jeżeli chciałbym sobie to routować za pomocą traefika np. na localhost wszystkie ustawienia w docker-compose są okej to przy odpaleniu localhosta dostaję błąd z kontenera wyżej uruchomionego obrazu:

frontend | ERROR Failed to load the config file
frontend | ERROR Error: Uncaught (in promise): Failed to load the config file
frontend | at resolvePromise (/app/dist/apps/frontend/server/server.js:1028:31)
frontend | at resolvePromise (/app/dist/apps/frontend/server/server.js:985:17)
frontend | at /app/dist/apps/frontend/server/server.js:1089:17
frontend | at ZoneDelegate.invokeTask (/app/dist/apps/frontend/server/server.js:599:31)
frontend | at Object.onInvokeTask (/app/dist/apps/frontend/server/server.js:192931:33)
frontend | at ZoneDelegate.invokeTask (/app/dist/apps/frontend/server/server.js:598:60)
frontend | at Zone.runTask (/app/dist/apps/frontend/server/server.js:371:47)
frontend | at drainMicroTaskQueue (/app/dist/apps/frontend/server/server.js:777:35)
frontend | at ZoneTask.invokeTask (/app/dist/apps/frontend/server/server.js:678:21)
frontend | at ZoneTask.invoke (/app/dist/apps/frontend/server/server.js:663:48) {
frontend | rejection: 'Failed to load the config file',
frontend | promise: ZoneAwarePromise [Promise] {
frontend | _zonesymbol_state: 0,
frontend |
zonesymbol__value: 'Failed to load the config file'
frontend | }

Wygląda to tak jakby problem nie był z samym traefikiem tylko to angularowy kontener nie podumał.

Tak jak wyżej napisałem za rozwiązanie problemu stawiam pizzę jeżeli ktoś miałby chwilkę czasu to zapraszam na priv ( ͡° ͜ʖ ͡°)

#devops #programowanie #angular #docker
  • 3
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

@egzo2: Nie wiem ale dla local devu zamiast treafika fajnie działa docker host manager + dodanie network w docker-compose.
Wtedy masz coś w stylu http(s)://nazwa_kontenera.lokalna-nazwa.sieci:4200 (bądź bez 4200 jeżeli zmienisz port na 80).
czyli np. http://app.supersoft.local tylko przy odpalaniu serwera musisz chyba tez zmienic nasluchiwany adres na dowolny.
  • Odpowiedz