【问题标题】:Docker Container (Website) Content not UpdatingDocker 容器(网站)内容未更新
【发布时间】:2023-02-13 22:51:21
【问题描述】:

我已经用网络主机 (httpd:2.4) 构建了一个项目

(Dockerfile 内容:
FROM httpd:2.4
COPY . /usr/local/apache2/htdocs)

它托管一个静态网站...我希望能够更改它/发布未来的更改,但这并不像我期望的那样工作...

我在用着

git clone [repository]
cd [repository]
docker-compose -f docker-compose/docker-compose.yml up -d

运行项目,效果很好

问题是我应该能够对网站进行更改。
我以为它会像那样工作:

docker-compose -f docker-compose/docker-compose.yml down
更改 index.html(保存)
docker-compose -f docker-compose/docker-compose.yml up -d

但即使(为了测试)我删除了 index.html 中的每个字符,它仍然显示与以前完全相同

我错过了什么?我必须运行哪些命令才能应用更改?

【问题讨论】:

    标签: docker apache docker-compose dockerfile containers


    【解决方案1】:

    如果您有一个 dockerfile,该文件包含以下内容,

    FROM httpd:2.4
    COPY . /usr/local/apache2/htdocs
    

    这意味着您正在根据需要构建自定义 docker 镜像。您还使用 COPY 命令将项目复制到您的 docker 镜像中完毕在构建自定义 docker 镜像时。这是一个很好的解决方案,可以将代码复制到 docker 镜像中以用于分发目的,但对于开发目的来说可能不是最好的。

    如果对项目进行了更改,这不会反映在自定义 docker 映像中,直到该 docker 映像被重建.重建镜像后,将项目当前文件复制到docker镜像中。然后在重新启动 docker compose 并使用最新构建的图像后,更改将可见。

    如果您不想在每次进行更改时都构建一个 docker 镜像,最好创建一个 docker-compose 文件,它将您的项目直接映射到 /usr/local/apache2/htdocs。这样,对项目所做的更改将立即反映出来,而无需任何构建过程。

    项目映射到 /usr/local/apache2/htdocs 的示例 docker compose 文件,此 docker compose 文件需要位于 index.html 所在的目录中。

    version: '3.9'
    
    services:
      apache:
        image: httpd:latest
        container_name: webserver
        ports:
          - '8080:80'
        volumes:
          # mapping your root project's directory to htdocs
          - ${PWD}:/usr/local/apache2/htdocs
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-07-22
      • 2020-01-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-08-15
      相关资源
      最近更新 更多