Saya memiliki dua aplikasi Dart yang harus saya galerisasi. Dua aplikasi ini menggunakan direktori sumber bersama.
Karena Docker mencegah penambahan file dari folder di luar direktori konteks ( project/app1
) Saya tidak dapat menambahkan file dari ../shared
atau dari shared
(symlink di dalamnya projects/app1
).
Saya mencari cara untuk menipu Docker untuk melakukannya.
Struktur proyek saya yang disederhanakan
- projects
- app1
- Dockerfile
- shared (symlink ../shared)
- otherSource
- app2
- Dockerfile
- shared (symlink ../shared)
- otherSource
- shared
- source
Saya bisa naik Dockerfile
satu tingkat dan berlari docker build
dari sana, tetapi kemudian saya membutuhkan dua Dockerfiles (untuk app1 dan app2) di direktori yang sama.
Ide saya saat ini adalah, jika saya bisa menyembunyikan fakta bahwa projects/app1/shared
symlink masalah ini akan diselesaikan. Saya memeriksa apakah saya dapat berbagi projects
menggunakan Samba dan remount di tempat lain dan mengkonfigurasi Samba untuk memperlakukan symlink seperti folder normal tetapi belum menemukan apakah ini didukung (Saya belum punya banyak pengalaman dengan Samba dan belum mencobanya, hanya mencari sedikit) .
Apakah ada alat atau trik lain yang memungkinkan?
Saya lebih suka tidak mengubah struktur direktori karena ini akan menyebabkan masalah lain dan juga lebih suka tidak menyalin file di sekitar.
Masalah ini telah berulang kali muncul di komunitas Docker. Ini pada dasarnya melanggar persyaratan bahwa
Dockerfile
dapat diulang jika Anda menjalankannya atau saya menjalankannya. Jadi saya tidak akan mengharapkan kemampuan ini, seperti yang dijelaskan dalam tiket ini: Perintah Dockerfile ADD tidak mengikuti symlink pada host # 1676 .Jadi, Anda harus memikirkan pendekatan yang berbeda. Jika Anda melihat masalah ini: ADD untuk mendukung symlink dalam argumen # 6094 , seorang teman kami dari U&L ( @Patrick aka. Phemmer) memberikan solusi yang cerdas.
Ini memberitahu
kutipan dari halaman manual tartar
dereference tautan simbolik dari direktori saat ini, dan kemudian pipa semuanya kedocker build -
perintah.sumber
cp
perintah, dapatkah Anda menjelaskan mengapa ini lebih baik? Saya juga berpikir pipa itu membingungkan / terlalu berbelit-belit. Mengapa tidak meletakkan perintah tar di atas perintah build. Saya kira karena Anda akan menimpa direktori yang disinkronkan dengan direktori yang sebenarnya./bin/cp ../requirements.txt . && docker build ...
ke Makefile untuk membangun Docker, itu lebih mudah