docker工人COPY .env文件失败

我有一个Dockerfile,并有这样的语法COPY ["Gemfile", "Gemfile.lock", "Procfile", ".env", "/huginn/"]

我使用RUN /bin/bash -l -c "ls -a"来检查文件应付状态,我发现.env文件不会被复制到图像上。

我将.env文件名更改为test.env并使用COPY ["Gemfile", "Gemfile.lock", "Procfile", "test.env", "/huginn/"] ,然后运行test.env复制到图像。

任何人都知道为什么? 任何解决scheme可以让docker支持COPY .env文件名?

如果你有.dockerignore文件,那么它可能是你添加到忽略像.git.vagrant等隐藏文件

如果.dockerfile忽略隐藏的文件,则可以启用不忽略或更改文件名。

有关.dockerignore文件的更多信息

你的COPY语法是错误的,这个语法对于Dockerfile中的ENTRYPOINT或者CMD是有效的。

请参阅文档COPY

https://docs.docker.com/engine/reference/builder/#/copy

共享我的dockerfile,它现在可以正常工作

 FROM ruby:2.3 MAINTAINER Tomato <tsaohucn@gmail.com> ENV DEBIAN_FRONTEND noninteractive ENV LANG C.UTF-8 ENV RAILS_VERSION 5.0.1 # install rails && bundler RUN gem install rails --version "$RAILS_VERSION" WORKDIR /huginn # copy huginn config file COPY ["Gemfile", "Gemfile.lock", "Procfile", ".env", "/huginn/"] COPY lib/gemfile_helper.rb /huginn/lib/ COPY vendor/gems /huginn/vendor/gems # run bundle install RUN bundle install # copy huginn COPY . /huginn/ RUN ls -a 

还有一个.dockerignore:

 .git tmp log doc spec media .openshift .bundle vendor/bundle db/*.sqlite3 public/system/* coverage .travis.yml build_docker_image.sh # Copied from .gitignore *.rbc *.sassc .sass-cache capybara-*.html .rspec !/tmp/.gitkeep **.orig rerun.txt pickle-email-*.html .idea/ .DS_Store deployment/tmp deployment/cookbooks .vagrant .*un~ .ruby-gemset .ruby-version manifest.yml config/unicorn.rb db/schema.rb