Wpis z mikrobloga

Jak to zrozumiec ?
# Create an image for the weather-app
FROM node
LABEL org.label-schema.version=v1.1
ENV NODEENV="development"
ENV PORT 3000

RUN mkdir -p /var/node
ADD src/ /var/node/
WORKDIR /var/node
RUN npm install
EXPOSE $PORT
CMD ./bin/www
Create the weather-app container:

Taki jest dockerfile.
I teraz moge sobie zbudowac obraz, i uruchomic
docker container run -d --name weather-app2 -p 8083:3001 --env PORT=3001 --env NODE
ENV=production linuxacademy/weather-app:v2

No i faktycznie moge zrobic curl localhost:8083

jak np. odpale kontener

docker container run -d --name weather-dev2 -p 8085:3005 --env PORT=3005 linuxacademy/weather-app:v2

To faktycznie dziala curl localhost:8085

Ale ja nie rozumiem jakim cudem to dziala. A node skad wie ze #!$%@? na porcie 3005, albo 3001, skad node dowiaduje sie ze musi zmienic port ? Przeciez w dockerfile podajemy tylko zmienna env, rownie dobrze moge sobie tam napisac
ENV wykop=12354
I jak to node zrozumie ze to bedzie jego nowy port ?

Ktos moglby to wyjasnic ? Czy to jest tak moze ze ten base obraz 'node' on po prostu jest tak zrobiony w specjalny sposob, ze on oczekuje ze ktos podac ENV PORT , i jesli bedzie podany to on sobie go zaaplikuje w konfiguracji ? czyli ten npm install musialby to w jakis sposob rozumiec ? Czy to w tym szkoleniu ktos moze to tak jakos po swojemu poustawial ze ten node dziala na wszystkich portach ?

#docker #linux
  • 7
Czy to jest tak moze ze ten base obraz 'node' on po prostu jest tak zrobiony w specjalny sposob, ze on oczekuje ze ktos podac ENV PORT


@oink_oink: Nie obrazy zazwyczaj nie są tak "mądre".

Po prostu aplikacja jest tak napisana, że z konkretnej zmiennej środowiskowej bierze sobie konfigurację albo robią to skrypty w samym kontenerze np jakiś prosty skrypt bashowy podmieniający wartości w plikach testowych sedem.

Jakbyś nie miał dockera
Szkoda ze koles zapomnial p tym powiedziec w szkoleniu. Teraz juz jest jasne


@oink_oink: Trochę tak trochę nie. Ogólnie to jest własność systemów operacyjnych i w pewnym sensie podstawa. Dobrze by było jakbyś zrobił sobie jakiś podstawowy kurs z liuksów, shella i pisania skryptów bo raz, że będzie ci łatwiej ogarnąć niektóre rzeczy a dwa, że pewnie jeszcze będzie kilka dodatkowych niedopowiedzeń w tym kursie dockera. Kontenery to nic innego jak