Этот сайт не может быть достигнут docker -компонент - PullRequest
1 голос
/ 23 февраля 2020

Я пытаюсь использовать docker -компонент для react-typescript приложения с webpack-dev-server ниже, это мой Dockerfile

FROM node:lts-slim

RUN mkdir -p /usr/src/app

WORKDIR /usr/src/app

EXPOSE 3000

CMD [ "npm", "start" ]

"start": "webpack-dev-server --port 3000" эта package.json строка

docker -compose.yml

version: "3"
services:
    frontend:
        container_name: awesome_web
        build:
            context: ./client
            dockerfile: Dockerfile
        image: webpack
        ports:
            - "3000:3000"
        volumes:
            - ./client:/usr/src/app

Я выполнил команду docker -compose up --build на основе скомпилированного приложения журналов успешно

вывод docker пс

CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                    NAMES
c88198ba996c        webpack             "docker-entrypoint.s…"   21 seconds ago      Up 20 seconds       0.0.0.0:3000->3000/tcp   awesome_web

, но когда я пытаюсь получить доступ localhost: 3000 получаю ошибку Этот сайт недоступен

Я новичок в docker, следую за онлайн-блогами, но не могу узнать, почему я не могу зайти на сайт?

Ответы [ 2 ]

2 голосов
/ 23 февраля 2020

Попробуйте изменить start скрипт на:

webpack-dev-server --host 0.0.0.0 --port 3000

А ваш Dockerfile на:

FROM node:lts-slim

RUN mkdir -p /usr/src/app

WORKDIR /usr/src/app
COPY . /usr/src/app/

EXPOSE 3000

CMD [ "npm", "start" ]

Примечание: я настоятельно рекомендую не запускать ваши контейнеры как root. Вы должны всегда понижать версию своего пользователя с помощью команды USER ....

Безопасность

Согласно этому отчету Сныка , вы дополнительно используете уязвимый базовый образ чтобы запустить его как root. Я настоятельно рекомендую вместо этого использовать это изображение . Кроме того, вы должны запустить свое изображение как не- root пользователь :

FROM node:13.8.0-alpine

# don't run as root
RUN addgroup -S app_group && adduser -S -G app_group app_user

RUN mkdir -p /usr/src/app && chown app_user /usr/src/app

WORKDIR /usr/src/app
COPY --chown=app_user:app_group . /usr/src/app/

EXPOSE 3000

USER node
CMD [ "npm", "start" ]
USER app_user
0 голосов
/ 23 февраля 2020

Если вы используете docker инструментарий, то для каждого контейнера запущена виртуальная машина, проверьте, работает ли ваш текущий контейнер, на какой виртуальной машине получите vm ip, и просмотрите этот URL vm-ip: 3000 Или, если вы просто запускаете docker, затем попробуйте открыть docker 0.0.0.0:3000.

...