热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

DockerIgnore对于dockercompose和我的文件结构没有很好的了解

如何解决《DockerIgnore对于dockercompose和我的文件结构没有很好的了解》经验,为你挑选了1个好方法。

我正在设置一个新的dockerfile和docker-compose.yml。我首先在下面显示我的带有rails的文件结构,我想使用一个新的.dockerignore来忽略node_modules.git

我的Docker 版本是:Docker版本18.09.0,构建4d60db4

我使用的docker-compose.ymlv3

根目录

- Gemfile
- app
- bin
- cable
- db
- config
- lib
- node_modules
- public
- vendor
- docker
  - app
    - Dockerfile
- .git
- .gitignore
- .dockerignore
- docker-compose.yml

码头工人/应用程序/码头文件

FROM ruby:2.3.1
ARG RAILS_ROOT
RUN mkdir -p $RAILS_ROOT
WORKDIR $RAILS_ROOT
COPY . .

docker-compose.yml

version: '3'
services:
  app:
    build: &build_core
      context: .
      dockerfile: ./docker/app/Dockerfile
      args:
        - APP_NAME=myappname
        - RAILS_ROOT=/var/www/${APP_NAME}_web
        - RAILS_ENV=development
        - RAILS_SERVE_STATIC_FILES=true
        - RAILS_LOG_TO_STDOUT=true
        - BUNDLE_OPTIOnS=
        - NPM_OPTIOnS=
    image: custom-web:1.0
    container_name: app
    volumes:
      - .:/var/www/${APP_NAME}_web
    env_file:
      - .env
    environment:
      RAILS_ROOT: "/var/www/${APP_NAME}_web"

.dockerignore

.git/
node_modules/

我用下一条命令建立了图像

docker-compose build app

当我查看容器时,文件文件仍在复制到我的容器中

也许是上下文,或者我应该将.dockerignore放到哪里,我也将.dockerignore放到docker / app / .dockerignore中,我也遇到了同样的问题。



1> norbjd..:

在构建时,伪指令COPY . .(位于内Dockerfile)正确复制了未在.dockerignore中列出的所有文件$RAILS_ROOT(在映像内)。没问题(通过运行进行检查docker run --rm custom-web:1.0 ls -al)。

但是在这里,您运行docker-compose启动容器,并定义了一个卷:

volumes:
    - .:/var/www/${APP_NAME}_web

这意味着docker-compose.yml主机和容器之间共享同一目录中的文件。因此,通过启动容器后,您会.dockerignore$RAILS_ROOTcustom-web:1.0图像的工作目录)中找到所有文件(甚至是列出的文件)docker-compose

如果您确实需要(通过卷)在主机和容器之间共享文件,建议您将当前目录挂载到不同于您指定的目录的其他位置Dockerfile,例如:

volumes:
    - .:/${APP_NAME}_web

否则,COPY . .在此处使用和卷是多余的。


推荐阅读
  • 在ElasticStack日志监控系统中,Logstash编码插件自5.0版本起进行了重大改进。插件被独立拆分为gem包,每个插件可以单独进行更新和维护,无需依赖Logstash的整体升级。这不仅提高了系统的灵活性和可维护性,还简化了插件的管理和部署过程。本文将详细介绍这些编码插件的功能、配置方法,并通过实际生产环境中的应用案例,展示其在日志处理和监控中的高效性和可靠性。 ... [详细]
  • 在软件开发过程中,经常需要将多个项目或模块进行集成和调试,尤其是当项目依赖于第三方开源库(如Cordova、CocoaPods)时。本文介绍了如何在Xcode中高效地进行多项目联合调试,分享了一些实用的技巧和最佳实践,帮助开发者解决常见的调试难题,提高开发效率。 ... [详细]
  • 解决Only fullscreen opaque activities can request orientation错误的方法
    本文介绍了在使用PictureSelectorLight第三方框架时遇到的Only fullscreen opaque activities can request orientation错误,并提供了一种有效的解决方案。 ... [详细]
  • 如何将TS文件转换为M3U8直播流:HLS与M3U8格式详解
    在视频传输领域,MP4虽然常见,但在直播场景中直接使用MP4格式存在诸多问题。例如,MP4文件的头部信息(如ftyp、moov)较大,导致初始加载时间较长,影响用户体验。相比之下,HLS(HTTP Live Streaming)协议及其M3U8格式更具优势。HLS通过将视频切分成多个小片段,并生成一个M3U8播放列表文件,实现低延迟和高稳定性。本文详细介绍了如何将TS文件转换为M3U8直播流,包括技术原理和具体操作步骤,帮助读者更好地理解和应用这一技术。 ... [详细]
  • 深入浅出 webpack 系列(二):实现 PostCSS 代码的编译与优化
    在前一篇文章中,我们探讨了如何通过基础配置使 Webpack 完成 ES6 代码的编译。本文将深入讲解如何利用 Webpack 实现 PostCSS 代码的编译与优化,包括配置相关插件和加载器,以提升开发效率和代码质量。我们将详细介绍每个步骤,并提供实用示例,帮助读者更好地理解和应用这些技术。 ... [详细]
  • PHP预处理常量详解:如何定义与使用常量 ... [详细]
  • Vue CLI 初始化 Webpack 项目时,main.js 文件是如何被调用的? ... [详细]
  • 本文介绍了如何使用 CMD 批处理脚本进行文件操作,包括将指定目录下的 PHP 文件重命名为 HTML 文件,并将这些文件复制到另一个目录。 ... [详细]
  • 本文将详细介绍如何注册码云账号、配置SSH公钥、安装必要的开发工具,并逐步讲解如何下载、编译 HarmonyOS 2.0 源码。通过本文,您将能够顺利完成 HarmonyOS 2.0 的环境搭建和源码编译。 ... [详细]
  • 单元测试:使用mocha和should.js搭建nodejs的单元测试
    2019独角兽企业重金招聘Python工程师标准BDD测试利器:mochashould.js众所周知对于任何一个项目来说,做好单元测试都是必不可少 ... [详细]
  • 本文介绍了Java中的com.sun.codemodel.JBlock._continue()方法,并提供了多个实际代码示例,帮助开发者更好地理解和使用该方法。 ... [详细]
  • 如何在Linux服务器上配置MySQL和Tomcat的开机自动启动
    在Linux服务器上部署Web项目时,通常需要确保MySQL和Tomcat服务能够随系统启动而自动运行。本文将详细介绍如何在Linux环境中配置MySQL和Tomcat的开机自启动,以确保服务的稳定性和可靠性。通过合理的配置,可以有效避免因服务未启动而导致的项目故障。 ... [详细]
  • 基于Net Core 3.0与Web API的前后端分离开发:Vue.js在前端的应用
    本文介绍了如何使用Net Core 3.0和Web API进行前后端分离开发,并重点探讨了Vue.js在前端的应用。后端采用MySQL数据库和EF Core框架进行数据操作,开发环境为Windows 10和Visual Studio 2019,MySQL服务器版本为8.0.16。文章详细描述了API项目的创建过程、启动步骤以及必要的插件安装,为开发者提供了一套完整的开发指南。 ... [详细]
  • 在Mac系统中安装Hexo时,如果遇到“Error: Cannot find module './build/Release/DTraceProviderBindings’”错误,可以通过以下步骤解决:首先确保已正确安装Node.js和npm,然后尝试运行`npm install hexo --no-optional`。若问题依然存在,建议检查环境变量配置,并参考Hexo官方文档进行进一步排查。 ... [详细]
  • 在当前的软件开发领域,Lua 作为一种轻量级脚本语言,在 .NET 生态系统中的应用逐渐受到关注。本文探讨了 Lua 在 .NET 环境下的集成方法及其面临的挑战,包括性能优化、互操作性和生态支持等方面。尽管存在一定的技术障碍,但通过不断的学习和实践,开发者能够克服这些困难,拓展 Lua 在 .NET 中的应用场景。 ... [详细]
author-avatar
川崎步
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有