Пусть xxx:v1
будет именем изображения, созданным из предоставленных вами Dockerfile
.
Если вы хотите получить доступ к своему приложению через хост (curl localhost:3001
), то вам нужно выполнить:
docker run -p 3001:3000 xxx:v1
Эта команда привязывает порт 3000
в вашем контейнере к порту 3001
на вашем хосте (IIRC, 3000
- порт по умолчанию, используемый npm start
).
После этого вы сможете получить доступ к localhost:3001
со своего хоста с помощью curl
.
Обратите внимание, что директива EXPOSE
в Dockerfile
не предоставляет автоматически порт при работе docker run
. Это просто указание на то, что ваш контейнер прослушивает порт, который вы EXPOSE
d. Здесь ваша директива EXPOSE
неверна, вы должны были написать:
EXPOSE 3000
, поскольку в контейнере отображается только порт 3000 (3000
- порт по умолчанию, используемый npm
). Какой порт вы хотите связать с хостом (или нет), указывается только во время выполнения.
Если вы не хотите получать доступ к своему приложению через localhost
, а только через IP-адрес контейнера, нет необходимости связывать порт (нет -p
). Вам нужно только сделать curl <container_ip>:3000
с вашего хоста.