使用Docker COPY复制隐藏文件.env

时间:2017-02-09 09:14:40

标签: linux ubuntu docker docker-compose dockerfile

我有一个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被复制到图像。

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

5 个答案:

答案 0 :(得分:12)

如果您有.dockerignore个文件,则可能会添加该文件以忽略.git.vagrant等隐藏文件。

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

For more info about .dockerignore file

答案 1 :(得分:0)

您的COPY语法错误,此语法对Dockerfile中的ENTRYPOINT或CMD有效。

请参阅COPY文档

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

答案 2 :(得分:0)

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

bool SbSystemGetPath(SbSystemPathId path_id, char* out_path, int path_size) {
  if (!out_path || !path_size) {
    return false;
  }
  const int kPathSize = PATH_MAX;
  char path[kPathSize];
  path[0] = '\0';
  switch (path_id) {
    case kSbSystemPathContentDirectory: {
      if (!GetExecutableDirectory(path, kPathSize)) {
        return false;
      }
      if (SbStringConcat(path, "/content/data", kPathSize) >= kPathSize) {
        return false;
      }
      break;
    }

还有一个.dockerignore:

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

答案 3 :(得分:0)

.dockerignore file文档中有一条声明:

Note: For historical reasons, the pattern . is ignored.

答案 4 :(得分:0)

我遇到了同样的问题,这是一个简单的解决方案===>

使用确切的目录路径复制隐藏文件如:-

示例:- 复制路径/.hidenfile destination_path