web-dev-qa-db-fra.com

Fichier caché .env non copié à l'aide de Docker COPY

J'ai un Dockerfile et il y a une syntaxe comme celle-ci COPY ["Gemfile", "Gemfile.lock", "Procfile", ".env", "/huginn/"]

J'utilise RUN /bin/bash -l -c "ls -a" pour vérifier l'état du fichier, je trouve que le fichier .env ne doit pas être copié dans l'image.

Je change le nom du fichier .env en test.env et j'utilise COPY ["Gemfile", "Gemfile.lock", "Procfile", "test.env", "/huginn/"], puis ça marche, test.env est copié dans l'image.

Quelqu'un sait pourquoi? Et n'importe quelle solution peut permettre à docker de prendre en charge le nom de fichier COPY .env?

19
Hsiu Chuan Tsao

Si tu as .dockerignore fichier alors il peut être ajouté pour ignorer les fichiers cachés comme .git, .vagrant etc.

Si .dockerfile en ignorant les fichiers cachés, vous pouvez soit activer pour ne pas ignorer ni modifier le nom du fichier.

Pour plus d'informations sur le fichier .dockerignore

23
pl_rock

partager mon dockerfile, il peut fonctionner correctement maintenant

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

Et il y a un .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

Votre syntaxe COPY est incorrecte, cette syntaxe est valide pour ENTRYPOINT ou CMD dans un Dockerfile.

Voir le doc pour COPY

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

0
user2915097

Il y a une déclaration dans la documentation . Dockerignore :

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