gpt4 book ai didi

Docker-compose 卷不复制任何文件

转载 作者:行者123 更新时间:2023-12-02 01:16:20 24 4
gpt4 key购买 nike

我使用的是 Fedora 23,我正在使用 docker-compose 构建两个容器:app 和 db。我想使用该 docker 作为我的开发环境,但每次更改代码时都必须执行 docker-compose build 和 up,这不太好。所以我正在搜索并尝试了“卷”选项,但我的代码没有被复制到 docker。

当我运行 docker-build 时,“RUN ls”命令不会列出“app”文件夹或其任何文件。

Obs.:在根文件夹中我有:docker-compose.yml、.gitignore、app(文件夹)、db(文件夹)

Obs1.:如果我删除卷和工作目录选项,而是在应用程序/Dockerfile 中使用“COPY ./app”命令,它可以工作并且我的应用程序正在运行,但我想要它同步我的代码。

有人知道如何让它发挥作用吗?

我的 docker-compose 文件是:

version: '2'  
services:
app:
build: ./app
ports:
- "3000:3000"
depends_on:
- db
environment:
- DATABASE_HOST=db
- DATABASE_USER=myuser
- DATABASE_PASSWORD=mypass
- DATABASE_NAME=dbusuarios
- PORT=3000
volumes:
- ./app:/app
working_dir: /app
db:
build: ./db
environment:
- MYSQL_ROOT_PASSWORD=123
- MYSQL_DATABASE=dbusuarios
- MYSQL_USER=myuser
- MYSQL_PASSWORD=mypass

在这里您可以看到我的应用程序容器 Dockerfile: https://gist.github.com/jradesenv/d3b5c09f2fcf3a41f392d665e4ca0fb9

这是 Dockerfile 中 RUN ls 命令的输出:

垃圾箱启动开发者ETC家库库64媒体米恩特选择进程根运行斯宾服务中心系统tmp使用者变量

最佳答案

卷安装在容器中。 Dockerfile 用于创建镜像,该镜像用于创建容器。这意味着 Dockerfile 中的 RUN ls 将在挂载卷之前显示文件系统。如果您需要这些文件成为镜像的一部分以完成构建,则它们不应该位于卷中,并且您需要使用 COPY 命令复制它们,如您所描述的。如果您只是想证明这些文件已安装在正在运行的容器内,请运行

docker exec $container_name ls -l /

其中 $container_name 类似于 ${folder_name}_app_1,您将在 docker ps 中看到它。

关于Docker-compose 卷不复制任何文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37952993/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com