Docker-compose 卷不复制任何文件

Jea*_*ert 5 docker dockerfile docker-compose docker-volume

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

\n\n

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

\n\n

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

\n\n

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

\n\n

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

\n\n

我的 docker-compose 文件是:

\n\n
version: \'2\'  \nservices:  \n  app:\n    build: ./app\n    ports:\n     - "3000:3000"\n    depends_on:\n     - db\n    environment:\n     - DATABASE_HOST=db\n     - DATABASE_USER=myuser\n     - DATABASE_PASSWORD=mypass\n     - DATABASE_NAME=dbusuarios\n     - PORT=3000\n    volumes:\n     - ./app:/app\n    working_dir: /app\n  db:\n    build: ./db\n    environment:\n     - MYSQL_ROOT_PASSWORD=123\n     - MYSQL_DATABASE=dbusuarios\n     - MYSQL_USER=myuser\n     - MYSQL_PASSWORD=mypass\n
Run Code Online (Sandbox Code Playgroud)\n\n

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

\n\n

以下是 Dockerfile 中 RUN ls 命令的输出:

\n\n

bin\nboot\ndev\netc\nhome\nlib\nlib64\nmedia\nmnt\nopt\nproc\nroot\nrun\nsbin\nsrv\nsys\ntmp\nusr\nvar

\n

BMi*_*tch 3

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

docker exec $container_name ls -l /
Run Code Online (Sandbox Code Playgroud)

哪里$container_name会有类似的东西${folder_name}_app_1,你会在docker ps.