Вопрос по работе Docker

Рейтинг: -1Ответов: 1Опубликовано: 13.03.2023

docker-compose.yaml:

version: '3'
services:
  myapp:
    build: .
    ports:введите сюда код
      - "9090:9090"

Dockerfile:

FROM php:7.4-apache
COPY index.php /var/www/html/
EXPOSE 9090
<?php
    echo "Hello, world!";
?>

Пожалуйста подскажите почему не отрабатывает http://localhost:9090/ http://joxi.ru/gmvG404f0QopG2 Файлы http://joxi.ru/Rmzl404HVde6lA

Ответы

▲ 1

Давайте кое что поправим.

Во-первых Dockerfile обязательно должен содержать либо CMD-инструкцию, либо ENTRYPOINT-инструкцию. В вашем случае - запустить веб-сервер Апач.

Во-вторых зачем вам проброс порта 9090 в контейнер? Уберите инструкцию EXPOSE, она вам сейчас не нужна.

Dockerfile:

FROM php:7.4-apache
COPY index.php /var/www/html/
CMD /usr/sbin/apache2ctl -D FOREGROUND

Теперь поправим docker-composer. Мы пробросим с хост-машины порт 9090 внутрь контейнера на порт 80:

version: '3'
services:
  myapp:
    build: .
    ports:
      - "9090:80"

В общем-то все.

$ docker-compose build
$ docker-compose up -d

и смотрим что получилось:

$ docker ps

должно быть что-то вроде:

CONTAINER ID   IMAGE                     COMMAND                  CREATED         STATUS                PORTS                                                                  NAMES
e2598ade6449   tmp_myapp                 "docker-php-entrypoi…"   5 minutes ago   Up 5 minutes          0.0.0.0:9090->80/tcp, :::9090->80/tcp                                  tmp_myapp_1

Ну остается только сделать http://localhost:9090