Memang ADD go /usr/local/
akan menambahkan konten dari go
folder dan bukan folder itu sendiri, Anda dapat menggunakan solusi Thomasleveil atau jika yang tidak bekerja untuk beberapa alasan Anda dapat mengubah WORKDIR
ke /usr/local/
kemudian menambahkan direktori Anda untuk itu seperti:
WORKDIR /usr/local/
COPY go go/
atau
WORKDIR /usr/local/go
COPY go ./
Tetapi jika Anda ingin menambahkan beberapa folder, akan sangat menjengkelkan untuk menambahkannya seperti itu, satu-satunya solusi untuk saat ini seperti yang saya lihat dari masalah saya saat ini adalah menggunakan COPY . .
dan mengecualikan semua direktori dan file yang tidak diinginkan .dockerignore
, katakanlah saya punya folder dan file :
- src
- tmp
- dist
- assets
- go
- justforfun
- node_modules
- scripts
- .dockerignore
- Dockerfile
- headache.lock
- package.json
dan saya ingin menambahkan src assets package.json justforfun go
:
di Dockerfile:
FROM galaxy:latest
WORKDIR /usr/local/
COPY . .
dalam file .dockerignore:
node_modules
headache.lock
tmp
dist
Atau untuk lebih bersenang-senang (atau Anda ingin membingungkan lebih banyak orang membuat mereka menderita juga: P) dapat:
*
!src
!assets
!go
!justforfun
!scripts
!package.json
Dengan cara ini Anda mengabaikan segalanya, tetapi mengecualikan apa yang ingin Anda salin atau tambahkan hanya dari "daftar abaikan".
Ini adalah jawaban yang terlambat tetapi menambahkan lebih banyak cara untuk melakukan hal yang sama bahkan mencakup lebih banyak kasus.
ADD
layer untuk setiap direktori sumber)?