web-dev-qa-db-ja.com

非表示のファイル.envはDocker COPYを使用してコピーされません

私は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ファイル名をサポートさせることができますか?

19
Hsiu Chuan Tsao

.dockerignoreファイルがある場合は、.git.vagrantなどの非表示ファイルを無視するように追加されている可能性があります。

隠しファイルを.dockerfileで無視する場合は、ファイル名を無視したり変更したりしないようにすることもできます。

。dockerignoreファイルの詳細について

23
pl_rock

私の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
0
Hsiu Chuan Tsao

COPY構文が間違っています。この構文は、DockerfileのENTRYPOINTまたはCMDに有効です。

COPYのドキュメントを参照してください

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

0
user2915097

。dockerignore file ドキュメントにステートメントがあります:

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