Cuando sudo docker-compose up dentro de mi directorio, aparece este error. Estoy tratando de hacer un contenedor, que aloje un sitio web php, donde puedas hacer whoami en él. Gracias
(13)Permission denied: AH00072: make_sock: could not bind to address 0.0.0.0:80 | no listening sockets available, shutting down | AH00015: Unable to open logsarchivo acoplable:
FROM ubuntu:16.04 RUN apt update RUN apt install -y apache2 php libapache2-mod-php RUN useradd -d /home/cp/ -m -s /bin/nologin cp WORKDIR /home/cp COPY source . USER cp ENTRYPOINT service apache2 start && /bin/bashdocker-compose.yml
version: '2' services: filebrowser: build: . ports: - '8000:80' stdin_open: true tty: true volumes: - ./source:/var/www/html - ./logs:/var/log/apache2Existe una regla general de larga data en los sistemas operativos similares a Unix que solo el usuario root puede abrir puertos "bajos" 0-1023. Dado que está intentando ejecutar Apache en el puerto HTTP predeterminado 80, pero lo está ejecutando como un usuario que no es root, obtiene el error "permiso denegado" que ve.
La respuesta absolutamente más fácil aquí es usar una imagen preconstruida que tenga PHP y Apache preinstalados. La imagen php de Docker Hub incluye una variante de esto. Puede usar un Dockerfile más simple:
FROM php:7.4-apache # Has Apache, mod-php preinstalled and a correct CMD already, # so the only thing you need to do is COPY source /var/www/html # If you want to run as a non-root user, you can specify RUN useradd -r -U cp ENV APACHE_RUN_USER cp ENV APACHE_RUN_GROUP cp Con el correspondiente docker-compose.yml
version: '3' # version 2 vs 3 doesn't really matter services: filebrowser: build: . ports: - '8000:80' volumes: - ./logs:/var/log/apache2 Si desea construir cosas desde cero, la siguiente opción más fácil sería la directiva de usuario de Apache: haga que su contenedor comience como raíz (para que pueda vincularse al puerto 80) pero luego indique a Apache que cambie al usuario sin privilegios una vez que se haya iniciado. . La imagen estándar de php:...-apache tiene una opción para hacer esto por sí sola, como se muestra arriba.