2017-02-09 110 views
2

我有一個Dockerfile並沒有這樣的COPY ["Gemfile", "Gemfile.lock", "Procfile", ".env", "/huginn/"]搬運工COPY .ENV文件失敗

語法我用RUN /bin/bash -l -c "ls -a"檢查文件應付狀態,我覺得.ENV文件doen't被複制到圖像。

我將.env文件名更改爲test.env並使用COPY ["Gemfile", "Gemfile.lock", "Procfile", "test.env", "/huginn/"],然後將其工作,test.env被複制到圖像。

任何人都知道爲什麼?任何解決方案可以讓碼頭支持COPY .env文件名?

+0

一個'。 env'文件應該被默認複製,ls是否在相同的目錄下運行? 'ls -a/huginn'? – Matt

回答

2

如果你有.dockerignore文件,那麼它可能是你添加到忽略隱藏文件,如.git.vagrant

如果.dockerfile忽略隱藏文件,那麼要麼你可以啓用到不能忽視或更改文件名。

For more info about .dockerignore file

+0

如果該文件被忽略,該命令將會報錯'lstat .env:no such file or directory' – Matt

+0

you right,there is'.dockerignore' file added to ignore hidden files'.env',所以我不能拷貝.env文件,謝謝你的幫助。 – Tsao

0

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

FROM ruby:2.3 

MAINTAINER Tomato <[email protected]> 

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