【问题标题】:How to change Document Root with Docker如何使用 Docker 更改文档根目录
【发布时间】:2020-11-16 02:10:08
【问题描述】:

我是 Docker 新手。我正在尝试为我的应用更改文档根目录。 my-app 目录有我的 php 代码。

Project
 - docker-compose.yml
 - html
    - my-app
 - php
    - 000-default.conf
    - Dockerfile

docker-compose.yml

version: "3"

services:
  php:
    build: ./php/
    # image: php:7.2-apache
    volumes:
      - ./html:/var/www/html
    ports: 
      - 8080:80
    container_name: php7.2
    restart: always

Dockerfile

FROM php:7.2-apache

RUN apt-get -y update && apt-get -y install vim
COPY 000-default.conf /etc/apache2/sites-available/

000-default.conf

<VirtualHost *:8080>
 
    ServerAdmin webmaster@localhost
    DocumentRoot /var/www/html/my-app
 
    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined
 
    EnableSendfile off
</VirtualHost>

我命令docker-compose up -d --build,但是文档根目录永远不会更改为我期望的 my-app。我确认 000-default.conf 已被容器内的 COPY 更改。

请给我同样的建议。 谢谢。

【问题讨论】:

  • WORKDIR 关键字
  • 我只在这个问题上有错字。

标签: php docker docker-compose dockerfile


【解决方案1】:

您的端口似乎是从后到前的。在您的 docker-compose.yml 文件中,您已设置主机端口 8080 和容器端口 80 (?),但您的 v-host 正在侦听容器端口 8080。

我实际上没有看到任何理由让您覆盖默认站点配置,也没有理由让您拥有Dockerfile。默认站点通过容器端口 80 提供来自 /var/www/html 的内容,因此您无需更改它。

试试这个配置

version: "3"

services:
  php:
    image: php:7.2-apache
    volumes:
      - "./html:/var/www/html"
    ports: 
      - "8080:80"

运行堆栈使用

docker-compose up -d

然后在浏览器中打开http://localhost:8080/my-app/

【讨论】:

    猜你喜欢
    • 2016-02-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-12-25
    • 2012-04-26
    • 2021-12-20
    • 2011-12-28
    相关资源
    最近更新 更多