แน่นอนADD go /usr/local/จะเพิ่มเนื้อหาของgoโฟลเดอร์และไม่ใช่ตัวโฟลเดอร์คุณสามารถใช้โซลูชัน Thomasleveil หรือหากไม่ได้ทำงานด้วยเหตุผลบางอย่างที่คุณสามารถเปลี่ยนWORKDIRเป็น/usr/local/แล้วเพิ่มไดเรกทอรีของคุณไปที่:
WORKDIR /usr/local/
COPY go go/
หรือ
WORKDIR /usr/local/go
COPY go ./
แต่ถ้าคุณต้องการเพิ่มหลาย ๆโฟลเดอร์มันจะน่ารำคาญที่จะเพิ่มมันอย่างนั้นทางออกเดียวสำหรับตอนนี้ที่ฉันเห็นจากปัญหาปัจจุบันของฉันคือการใช้COPY . .และไม่รวมไดเรกทอรีและไฟล์ที่ไม่ต้องการทั้งหมด.dockerignoreมาสมมติว่าฉันมีโฟลเดอร์และไฟล์ :
- src
- tmp
- dist
- assets
- go
- justforfun
- node_modules
- scripts
- .dockerignore
- Dockerfile
- headache.lock
- package.json
และฉันต้องการที่จะเพิ่มsrc assets package.json justforfun go:
ใน Dockerfile:
FROM galaxy:latest
WORKDIR /usr/local/
COPY . .
ในไฟล์ .ockerignore:
node_modules
headache.lock
tmp
dist
หรือเพื่อความสนุกสนานมากขึ้น (หรือคุณต้องการสร้างความสับสนให้ผู้คนมากขึ้นทำให้พวกเขาประสบเช่นกัน: P) สามารถ:
*
!src
!assets
!go
!justforfun
!scripts
!package.json
ด้วยวิธีนี้คุณจะไม่สนใจทุกสิ่ง แต่ไม่รวมสิ่งที่คุณต้องการคัดลอกหรือเพิ่มจาก "ละเว้นรายการ" เท่านั้น
มันเป็นคำตอบที่ล่าช้า แต่การเพิ่มวิธีการที่จะทำสิ่งที่เหมือนกันนั้นครอบคลุมมากขึ้น
ADDเลเยอร์สำหรับแต่ละไดเรกทอรีแหล่งที่มา)?