igorsimdyanov / php8

Примеры к книге "PHP 8. Котеров Д., Симдянов И."
65 stars 16 forks source link

Стр. 70 Интерактивный режим PHP не запускается #296

Open rustkas opened 2 months ago

rustkas commented 2 months ago

При пытке запустить интерактивный режим PHP, по описанию в книге ничего не полулось. Происходил вход и выходы из интерактивного режима

Решение

В отдельной папке создал Dockerfile:

FROM php:latest
ENTRYPOINT [ "php", "-a" ]
Собрал Docker-образ.

В той же директории, где находится Dockerfile, выполнил команду:

docker build -t my-php-repl .
Запустил контейнер:
    docker run -it my-php-repl

Этот метод запустил контейнер непосредственно в интерактивном режиме PHP и сохранил его работающим до тех пор, пока Вы не решите выйти.

Выход и завершение работы контейнера

Выйти из интерактивного режима поможет сочетание клавиш Ctrl + D или ввод команды exit.

Для того чтобы завершите работу с контейнером необходимо выполнить следующие шаги:

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

docker ps

Если контейнер все еще работает, вы можете остановить его вручную:

docker stop <container_id>

Здесь — это идентификатор контейнера, который вы можете получить из команды docker ps.

Удалите остановленный контейнер (по желанию):

Если вы хотите полностью удалить контейнер после его остановки, выполните:

docker rm <container_id>

Эти шаги позволят вам корректно завершить работу интерактивного режима PHP и остановить контейнер Docker.

Если вы хотил удалять контейнер автоматически исле его завершения работы, вы можете использовать опцию --rm в команде docker run, чтобы автоматически удалить контейнер после его остановки. Эта опция гарантирует, что контейнер будет удален, как только вы завершите его работу. Вот как это можно сделать:

docker run -it --rm my-php-repl

Эта команда запускает контейнер в интерактивном режиме с автоматическим удалением контейнера после завершения работы.

Ключ -it в команде docker run -it --rm my-php-repl состоит из двух флагов:

`-i` (или `--interactive`): Эта опция позволяет работать с контейнером в интерактивном режиме. Она сохраняет поток ввода (stdin) открытым, что позволяет вводить команды вручную.

`-t` (или `--tty`): Эта опция создает псевдо-терминал (TTY) для контейнера. Она позволяет получить интерфейс терминала, что делает работу с контейнером более удобной.

Вместе, -it позволяет вам запускать контейнер в интерактивном режиме с поддержкой терминала, что особенно полезно для работы с интерактивными оболочками, такими как PHP REPL, Bash и другие.