Я использую настройку Apache / MySql Docker-compose, и все это хорошо.Однако проблема возникает, когда, поскольку это для локальной разработки, веб-контейнер указывает на локальную папку, для которой мне нужно, чтобы у Apache были разрешения.
Использование
RUN mkdir /www \
&& chown -R apache:apache /www
VOLUME ["/www"]
хорошоесли я запускаю докер-файл Apache самостоятельно или запускаю его в docker-compose без указания тома.Но это означает, что я не могу указать этот том на локальный каталог, в этом сценарии «www» существует внутри контейнера, но не отображается на хост-машину.Если я указываю том внутри файла docker-compose, он отображается в соответствии с ожиданиями, но не позволяет мне просматривать папку / файлы (даже если я выполняю их в контейнере)
Ниже приведено подтверждение концепции,Я работаю в Windows 10 / Docker Desktop Community версии 2.0.0.0-win81 (29211)
EDIT (прокомментировал выставление порта, собрал файл docker из docker-compose и изменил порт с 80 на 81)
РЕДАКТИРОВАТЬ (я обновил следующие файлы, см. Внизу, я оставляю их для потомков)
docker-compose.yml
version: '3.2'
services:
web:
restart: always
build:
context: .
ports:
- 80:80
volumes:
- ./:/www
Dockerfile
FROM centos:centos6 as stage1
RUN yum -y update && yum clean all \
&& yum --setopt=tsflags=nodocs install -y yum-utils \
httpd \
php
FROM stage1 as stage2
RUN mkdir /www \
&& chown -R apache:apache /www
#VOLUME ["/www"]
#EXPOSE 80
ENTRYPOINT ["/usr/sbin/httpd", "-D", "FOREGROUND"]
ОБНОВЛЕНО Доказательство файлов концепции
Docker-compose.yml
version: '3.2'
services:
web:
build:
context: .
ports:
- 80:80
volumes:
- ./:/www
Dockerfile
FROM centos:centos6
RUN yum -y update && yum clean all \
&& yum --setopt=tsflags=nodocs install -y yum-utils \
httpd \
php
COPY ./entrypoint.sh /
ENTRYPOINT ["/entrypoint.sh"]
entrypoint.sh
#!/bin/bash
set -e #exit straight away if there's an issue
chown -R apache:apache /www
# Apache
/usr/sbin/httpd -D FOREGROUND