Я новичок в Docker, и я попытался запустить контейнер образа create-реагировать на приложение, так что это шаги, которые я сделал:

1- npx интерфейс для создания-реагирования-приложения

2- Я создал Dockerfile.dev, как показано ниже:

  FROM node:alpine
  WORKDIR '/app'
  COPY package.json .
  RUN npm install
  COPY . . 
  CMD ["npm" , "run" , "start"]

3- Я использовал эту команду для создания образа:

docker build -f Dockerfile.dev .

4- Когда я запускаю контейнер, используя предоставленный идентификатор изображения:

docker run -p 3000:3000 my_docker_image_id

Ничего не происходит, как показано на снимке экрана:

с этой командой ничего не происходит

Но когда я добавляю аргумент -i к моей команде, все работает нормально:

docker run -p 3000:3000 -i my_docker_image_id

ок команда

Любая идея, пожалуйста?

0
noussair 26 Апр 2020 в 20:20

2 ответа

Лучший ответ

Существует проблема с версией 3.4.1 реагирующих скриптов,

Поэтому я добавил файл docker-compose и указал эту строку, которая решает проблему и спасает мой день:

stdin_open: true 

Итак, мой файл docker-compose.yml выглядит так:

version : '3'
services:
    web:
        build: 
            context: .
            dockerfile: Dockerfile.dev
        stdin_open: true    
        ports:
            - "3000:3000"
        volumes:
            - /app/node_modules
            - .:/app     
1
noussair 27 Апр 2020 в 00:59

Флаг -i включает интерактивный режим, который соединяет выход с вашим терминалом. Вы пытались зайти на сайт без флага -i? Он должен был обслуживать вашу страницу, но не отображать вывод на вашу консоль.


< Сильный > UPDATE :

Поэтому, основываясь на проблеме GitHub, которую вы обнаружили, вы также будете возможность использовать Docker с флагами -it. -i объясняется выше, но -t включает TTY аналогично строке stdin_open: true в вашем docker-compose.yml

docker -it run -p 3000:3000 my_docker_image_id


Вместо этого добавьте флаг -d, который включает режим Detached и позволит Docker запускать ваш контейнер в фоновом режиме. Затем вы можете запустить docker logs {container_id}, чтобы увидеть выходные данные сервера.

Вот ссылка в документации Docker: https: //docs.docker .com / двигатель / ссылка / запуск / # удаленных - противы- передний план

При запуске контейнера Docker вы должны сначала решить, хотите ли вы запускать контейнер в фоновом режиме в «отдельном» режиме или в режиме переднего плана по умолчанию:

-d = false: режим отсоединения: запуск контейнера в фоновом режиме, печать нового идентификатора контейнера.

0
Joe Doyle 27 Апр 2020 в 19:28