Свой образ в Docker
Свой образ копирует страницу
и конфиг внутрь,
и том для правки уже не нужен.
Файлы попадают в слои шаблона
шагом COPY,
а не ADD
и не через монтирование
с компьютера при каждом запуске.
Строка EXPOSE
в файле шагов
лишь описывает порт
для читателя шаблона
и сама по себе
не публикует его на машину.
Страница site/index.html
содержит слово hello:
<!DOCTYPE html>
<html lang="ru">
<head>
<meta charset="UTF-8">
<title>page</title>
</head>
<body>
hello
</body>
</html>
Конфиг задаёт
слушать 80
и отдавать файлы
из /usr/share/nginx/html:
server {
listen 80;
root /usr/share/nginx/html;
index index.html;
location / {
try_files $uri $uri/ =404;
}
}
Файл шагов берёт основу
nginx:1.30,
копирует оба файла
и помечает порт
для документации:
FROM nginx:1.30
COPY site/index.html /usr/share/nginx/html/index.html
COPY default.conf /etc/nginx/conf.d/default.conf
EXPOSE 80
Сервис web
собирается из текущей папки,
без строки image
и без томов.
Порт 8080
на компьютере
связывают с 80
внутри копии -
именно так
откроем сайт в браузере.
Файл compose.yaml:
services:
web:
build: .
ports:
- "8080:80"
Подъём в фоне
с пересборкой
создаст свежий шаблон
и контейнер из него.
Страницу по адресу
localhost:8080
откроем после запуска:
docker compose up -d --build
Соберите сервис land из Dockerfile на nginx:1.30 со страницей land и конфигом без томов, с парой портов 8095 и 80.
Откройте localhost:8095 и зафиксируйте слово на странице.