Легко смонтировать свою собственную привет страницу мира.Я объясню это с помощью официального nginx:latest
изображения, но вы можете сделать это для себя с помощью изображения bitnami.
Сначала самое основное.Просто запустите контейнер nginx (без docker-compose).Я объясню это подробно и в общих чертах, конечно, я могу попытаться выполнить более сложные или более быстрые команды для чтения файлов, которые находятся внутри контейнера, но это может сбить с толку новичка.Так что просто запустите контейнер и назовите его my-nginx
:
$ docker run --rm -d -p 80:80 --name my-nginx nginx
Перейдите на localhost:80
, вы увидите страницу nginx по умолчанию.Теперь вы можете выполнить внутри контейнера, используя его имя.exec перенесет вас «внутрь контейнера», чтобы вы могли проверить его файлы.
$ docker exec -it my-nginx bash
root@2888fdb672a1:/# cd /etc/nginx/
root@2888fdb672a1:/etc/nginx# ls
conf.d koi-utf mime.types nginx.conf uwsgi_params
fastcgi_params koi-win modules scgi_params win-utf
Теперь прочитайте nginx.conf
, используя cat
.Самая важная строка в этом файле:
include /etc/nginx/conf.d/*.conf;
Это означает, что все confs
внутри этого каталога используются / читаются.Итак, перейдите к /etc/nginx/conf.d/
.
root@2888fdb672a1:~# cd /etc/nginx/conf.d/
root@2888fdb672a1:/etc/nginx/conf.d# ls
default.conf
default.conf
- единственный файл.Внутри этого файла вы видите конфигурацию:
listen 80;
server_name localhost;
location / {
root /usr/share/nginx/html;
index index.html index.htm;
}
сервер является локальным хостом, порт 80, и файл, который будет отображаться, находится в каталоге /usr/share/nginx/html/
Теперь проверьте этот файл вВаш контейнер:
root@2888fdb672a1:/etc/nginx/conf.d# cat /usr/share/nginx/html/index.html
<!DOCTYPE html>
<html>
<head>
<title>Welcome to nginx!</title>
<style>
body {
width: 35em;
margin: 0 auto;
font-family: Tahoma, Verdana, Arial, sans-serif;
}
</style>
...
Это ожидаемый файл.Это страница «Добро пожаловать в Nginx», которую мы видим.Так как же мы можем показать наши index.html
?Просто смонтировав его в /usr/share/nginx/html
.
Вы будете docker-compose.yaml
выглядеть следующим образом.
version: '3'
services:
web:
image: nginx:latest
volumes:
- ./code:/usr/share/nginx/html
ports:
- "80:80"
Каталог кодов просто содержит index.html
с hello world.Запустите docker-compose up -d --build
, и когда вы свернете localhost:80
, вы увидите свой собственный index.html
.
Если вы действительно хотите поместить свой код в /var/www/html
вместо /usr/share/nginx
, вы можете сделать это.
Используйте свой test.conf
.Здесь вы определяете, чтобы поместить ваш файл в /var/www/html/
:
server {
listen 80;
listen [::]:80;
server_name test.local;
index index.html; #Only a basic helloworld index.html file
error_log /var/log/nginx/error.log;
access_log /var/log/nginx/access.log;
root /var/www/html;
}
В compose вы перезапишете default.conf
с вашим собственным conf, где вы указываете nginx искать в /var/www/html
.Ваша композиция может выглядеть следующим образом:
version: '3'
services:
web:
image: nginx:latest
volumes:
- "./test.conf:/etc/nginx/conf.d/default.conf"
- "./code:/var/www/html"
ports:
- "80:80"
Теперь вы также увидите свои собственные index.html
, пока они находятся в указанном вами месте.Длинный ответ, но я надеюсь, что это поможет.