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

docker:docker-将文件从容器复制到主机

甄飞飙
2023-03-14

我想在docker-compose.yml文件中复制安装过程中的所有文件。

$ git clone https://github.com/laravel/laravel.git laravel-app
$ cd laravel-app
$ docker run --rm -v $(pwd):/app composer install
version: '3'
services:

  #PHP Service
  app:
    build:
      context: .
      dockerfile: Dockerfile
    container_name: app
    restart: unless-stopped
    tty: true
    environment:
      SERVICE_NAME: app
      SERVICE_TAGS: dev
    working_dir: /var/www
    volumes:
      - ./:/var/www
      - ./php/local.ini:/usr/local/etc/php/conf.d/local.ini
    networks:
      - app-network
FROM php:7.4.4-fpm

# Set working directory
WORKDIR /var/www

# Install dependencies
RUN apt-get update && apt-get install -y

# Install composer
RUN curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/local/bin --filename=composer

# Copy existing application directory contents
COPY . /var/www

# Install composer.json dependencies
RUN composer install # <<-- !this one!

它不会将vendor文件夹和composer.lock文件复制回我的主机。

能让它发生吗?

共有1个答案

壤驷阳波
2023-03-14

>

  • 将所有生成上下文复制到映像/var/www

    您从映像运行composer install,因此vendorcomposer.lock只存在于映像中,而不存在于您的主机上

    您将mount当前目录(包含composer.json但不包含vendorcomposer.lock)绑定到/var/www,因此它将替换映像/var/www

    你知道你的问题,修复取决于你想做什么,在评论中告诉我。

    提示:您应该使用Docker多阶段构建将Composer安装到您的映像中。它比curl要干净得多

    COPY --from=composer:latest /usr/bin/composer /usr/bin/composer
    
    COPY . /var/www/
    
    RUN composer install --no-scripts --no-suggest --optimize-autoloader
    

  •  类似资料:
    • 问题内容: 我正在尝试为我们使用的Docker容器构建备份和还原解决方案。 我已经创建了Docker基本映像,并且不想每次都使用Docker文件重建它来向其添加文件。 我想创建一个从主机运行的脚本,并使用Docker映像创建一个新容器,然后将文件复制到该容器中。 如何将文件从主机复制到容器? 问题答案: 该命令可用于复制文件。 可以将一个特定文件复制到容器中,例如: 可以从容器中复制一个特定文件,

    • 问题内容: 我正在考虑使用Docker在持续集成(CI)服务器上构建我的依赖项,这样我就不必在代理程序本身上安装所有运行时和库。 为此,我需要将容器内部构建的构建工件复制回主机。那可能吗? 问题答案: 为了将文件从容器复制到主机,可以使用以下命令 这是一个例子: 这里 goofy_roentgen 是我从以下命令获得的容器名称: 您还可以使用(部分) 容器ID 。以下命令等效于第一个

    • 问题内容: 我正在尝试将一组文件从Docker主机复制到容器。在AUFS系统上,直接进入/ var / lib / docker / aufs / …即可。但是我是另一个使用Fedora的系统,它具有devicemapper作为存储驱动程序。在这个系统上,如果我这样做: 我什么都没有。我已经尝试了将文件从主机复制到Docker容器的所有建议 使用tar似乎很棒,而不是直接转到基础FS。但是我不能假

    • 我一无所获。我尝试了从将文件从主机复制到Docker容器的所有建议 使用tar似乎很棒,而不是直接去底层FS。但我不能假设焦油会出现在所有容器中。 如果是相关的,我甚至尝试在容器中创建一个文件,但它然后做了一个查找。-在/var/lib/docker/devicemapper/mnt中命名无效。

    • 我正在考虑使用Docker在持续集成(CI)服务器上构建我的依赖项,这样我就不必在代理本身上安装所有的运行时和库。 为了实现这一点,我需要将在容器中构建的构建构件复制回主机中。有可能吗?

    • 我正在编写一个Docker文件,我的要求是将容器内文件夹的内容复制到本地主机。我怎么能做到这一点呢?