Docker-compose Apache 将外部本地目录映射到文档根目录

Docker-compose Apache mapping external local directory to document root

我是 Docker 的新手,我正在尝试使用 [=35= 创建本地开发 LAMP(更准确地说是 Apache、MariaDB、PHP)堆栈]-撰写来自 Docker 集线器的现有 Docker 图像,如果可能,没有 Docker 文件,用于多个本地 Web 项目。

我想将我的本地 Web 项目目录 /Users/myusername/projects/myprojectname 映射到 Apache 容器的默认文档根目录(对于 Apache image I'm using 似乎是 /app

这是我的 docker-compose.yml 文件:

version: "3"

services:
  mariadb:
    image: mariadb:10.5
    container_name: mariadb
    restart: always
    ports:
      - 8889:3306
    volumes:
      - ./mysql:/var/lib/mysql
    environment:
      - MYSQL_ROOT_PASSWORD=root
      - MYSQL_USER=localmysqluser
      - MYSQL_PASSWORD=localmysqlpwd
  php:
    image: bitnami/php-fpm:7.4
    container_name: php
    ports:
      - 9000:9000
    volumes:
      - /Users/myusername/projects/myprojectname:/app
  apache:
    image: bitnami/apache:latest
    container_name: apache
    restart: always
    ports:
      - 8080:80
    volumes:
      - ./apache-vhosts/myapp.conf:/vhosts/myapp.conf:ro
      - /Users/myusername/projects/myprojectname:/app
    depends_on:
      - mariadb
      - php

但是当我执行 docker-compose up -d 然后浏览到 http://localhost:8080/ 时,我得到的数据为零。我哪里错了?是我docker-compose.yml配置不对,还是系统权限问题?

我一直在查看 ,但我希望尽可能不使用任何 Docker 文件。

进一步的问题:是否可以使 Apache 在我的本地浏览器中可以浏览本地目录 /Users/myusername/projects/

正如 J. Song 的回答,此 Apache Docker 映像的公开端口号是 8080,而不是 80。

所以我们只需要将Apache服务的端口映射改为8080:8080而不是8080:80