【问题标题】: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