当前位置: 首页 > 知识库问答 >
问题:

Docker compose卷不复制任何文件

文华美
2023-03-14

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

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

注意事项:在根文件夹中,我有:docker compose。yml。gitignore、应用程序(文件夹)、数据库(文件夹)

注意事项:如果我删除了卷和工作目录选项,而是在app/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命令的输出:

bin boot dev etc home lib lib64 media mnt opt proc root run sbin srv sys tmp usr var

共有3个答案

公良琛
2023-03-14

您可以扩展或覆盖docker compose配置。请关注更多信息:https://docs.docker.com/compose/extends/

糜单弓
2023-03-14

有两件事,你试过版本:'3'version二似乎过时了。还可以尝试将工作目录放入Dockerfile而不是docker compose。也许版本2中不支持它?

这是我最近在docker文件中与卷和WorkDir一起使用的docker compose:

version: '3'
services:
  frontend:
    build:
      context: ./frontend
      dockerfile: Dockerfile.dev
    ports:
      - 3001:3001
    volumes:
      - ./frontend:/app
    networks:
      - frontend
  backend:
    build: .
    ports:
      - 3000:3000
    volumes:
      - .:/app
    networks:
      - frontend
      - backend
    depends_on:
      - "mongo"
  mongo:
    image: mongo
    volumes:
      - ./data/db:/data/db
    ports:
      - 27017:27017
    networks:
      - backend
networks:
  frontend:
  backend:
韩乐湛
2023-03-14

将卷装入容器中。Dockerfile用于创建图像,该图像用于制作容器。这意味着Dockerfile中的RUN ls将在装入卷之前显示文件系统。如果您需要这些文件成为映像的一部分,以便完成构建,那么它们不应该在卷中,您需要使用copy命令复制它们,如您所述。如果您只是想要证据证明这些文件已装入正在运行的容器中,请运行

docker exec $container_name ls -l /

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

 类似资料:
  • 我试图将我的源文件挂载到位于/var/dynamo的docker目录中。我希望能够在本地运行Docker,并在工作时使用我的本地文件。 使用run命令: Docker版本为1.9.1

  • 我有一些hazelcast http会话复制特性的问题。 我有些问题: 在同一个tomcat集群中有没有可能有hazelcast封装的应用程序和非hazelcast封装的应用程序? 带有hazelcast的应用程序应该是可分发的?(通过像其他方法一样添加它的web.xml) 部署应用程序的Tomcat不应该在集群中?是否可以在同一tomcat中使用标准tomcat会话复制将其他应用程序群集化? 编

  • 问题内容: 我正在尝试将.csv文件中的大量数据转储到SQL Server 2012数据库中。我没有进行数千次INSERT的工作,而是在进行调查。 编辑: 这是一个自动化的过程,而不是一次性的。我也没有此数据库的权限。 当我尝试将数据复制到数据库中时,不会返回任何错误,但实际上也不会复制任何内容-它只会返回。我已将其缩减为无法正常工作的最小情况。 首先,创建一个包含两列的简单表: 然后,使用来从中

  • 我正在尝试在linux Redhat上安装sonarqube的更新版本。已经传输了配置和属性文件的详细信息,那么当我执行sonar.sh start时,我会得到一个错误: “找不到以下任何二进制文件:/opt/sonar...../opt/sonarq/sonarqube-5.6.6/bin/linux-x86-64/./wrapper(找到但不可执行)。” 我想知道是否有人碰到过这个问题,并且知

  • 本文向大家介绍C#使用FileStream复制一个任意文件,包括了C#使用FileStream复制一个任意文件的使用技巧和注意事项,需要的朋友参考一下 FileStream,顾名思义,文件流。流,是字节流。我的理解是,硬盘上存在一个字节流,内存里也有一个字节流,它们是对应的。程序运行时,我们只能对内存里的字节流直接操作,在它被关闭的时候,它的内容自动写入硬盘上的相应字节流。 复制一个文件的基本思路

  • 问题内容: 我有一个pom.xml文件,其中包含以下内容: 里面有一些文件夹,其中不包含任何.java文件。当我开始编译时,它们不会复制到目录中。 仅将.java文件移动(当然是在编译后)并存储在正确的文件夹中。 有人可以在不使用任何插件的情况下帮助我解决此问题吗? 我尝试过 但这行不通。怎么了? 问题答案: 如果它们不是Java文件,则应将它们移至and / or 目录。这是存储非Java文件的