Я следил за этой статьей, чтобы создавать мультидоменные веб-сайты
https://carlosvin.github.io/langs/en/posts/reverse-proxy-multidomain-docker/
Это базовый тест, очень простой. Всего три файла.
Изменить
C:\Windows\System32\драйверы\etc\hosts
127.0.0.1 a.local
127.0.0.1 b.local
C:\web\мультидомен\docker-compose.yml
a:
build: a
environment:
VIRTUAL_HOST: a.local
restart: always
b:
build: b
environment:
VIRTUAL_HOST: b.local
restart: always
nginx-proxy:
image: jwilder/nginx-proxy
ports:
- "80:80"
- "443:443"
volumes:
- /var/run/docker.sock:/tmp/docker.sock:ro
restart: always
privileged: true
C:\web\мультидомен\a\Dockerfile
FROM httpd:2.4
RUN echo "<html><body><h1>A</h1>App A works!</body></html>" > /usr/local/apache2/htdocs/index.html
C:\web\мультидомен\b\Dockerfile
FROM httpd:2.4
RUN echo "<html><body><h1>B</h1>App B works!</body></html>" > /usr/local/apache2/htdocs/index.html
Это все папки и файлы. Затем:
C:\web\multidomain> docker-compose up -d
Это реально работает. Очень очень просто.
Но мой вопрос: Есть строка "FROM httpd:2.4". Насколько я знаю, это загрузит изображение и использует его, не так ли? Он должен появиться в моем пользовательском интерфейсе докера > раздел «Изображения». Но у моего докера нет изображения с именем httpd: 2.4.
Если нет изображения с именем httpd:2.4, почему оно все еще работает?
х х х х х х
PS C:\Docker\MultiDomainBasic> docker image ls
REPOSITORY TAG IMAGE ID CREATED SIZE
multidomainbasic_a latest fb826b8c2db3 44 seconds ago 144MB
multidomainbasic_b latest 23b08c2f23ff 45 seconds ago 144MB
sail-8.1/app latest 4451e0a34f0f 47 hours ago 1.09GB
wordpress php7.4 744143078625 2 days ago 605MB
memcached alpine bcea36e93e26 4 days ago 8.21MB
nginx alpine 51696c87e77e 4 days ago 23.4MB
jwilder/nginx-proxy alpine dfb8bfd11460 5 days ago 42.3MB
mysql 8.0 667ee8fb158e 10 days ago 521MB
php 8.1.4-fpm 8c08d993542f 11 days ago 449MB
mailhog/mailhog latest 4de68494cd0d 20 months ago 392MB
Может образ httpd находится внутри multidomainbasic_a, а multidomainbasic_b?? Он завернут?
Означает ли "интерфейс докера" Рабочий стол Docker (для Windows)?
«образ докера ls»> нет httpd. «docker UI» означает Docker Desktop для Windows, да.
есть хороший инструмент для проверки ваших изображений: попробуйте его. github.com/wagoodman/дайв
Dockerfile определяет, как создается ваш новый образ. Вы не используете образ httpd, вы используете два разных образа, которые расширяют образ httpd:
multidomainbasic_a latest fb826b8c2db3 44 seconds ago 144MB
multidomainbasic_b latest 23b08c2f23ff 45 seconds ago 144MB
Слои из образа httpd будут найдены в каждом из них с одним дополнительным слоем, созданным на шаге RUN в вашем Dockerfile.
Чтобы расширить (и, следовательно, запустить образ сборки из
Dockerfile
), мы должны загрузить базовый образ (и его базовый образ, и его базовый образ, ...). Так что да, изображение должно быть там. Что показываетdocker image ls
? Вы видите это там?