ドッキングする必要がある2つのDartアプリケーションがあります。これら2つのアプリは共有ソースディレクトリを使用します。
Dockerがコンテキストディレクトリ外のフォルダーからのファイルの追加を防ぐため(project/app1
)../shared
からもshared
(projects/app1
内のシンボリックリンク)からもファイルを追加できません。
とにかくDockerをだます方法を探しています。
私の簡略化されたプロジェクト構造
- projects
- app1
- Dockerfile
- shared (symlink ../shared)
- otherSource
- app2
- Dockerfile
- shared (symlink ../shared)
- otherSource
- shared
- source
Dockerfile
を1レベル上に移動して、そこからdocker build
を実行できますが、同じディレクトリに2つのDockerfile(app1とapp2)が必要です。
私の現在の考えは、projects/app1/shared
がシンボリックリンクであるという事実を何らかの形で隠すことができれば、この問題は解決されるだろうというものでした。 Sambaを使用してprojects
を共有できるかどうかを確認し、別の場所に再マウントして、Sambaを設定してシンボリックリンクを通常のフォルダーのように処理しましたが、これがサポートされているかどうかはわかりません(Sambaの経験があまりなく、まだ試していません、少し検索しただけです)。
それを可能にする他のツールやトリックはありますか?
ディレクトリ構造は変更しないでください。変更すると他の問題が発生し、ファイルがコピーされなくなります。
私はdocker
の経験があまりないので、これが機能することを保証できませんが、1つの選択肢は、リンクする代わりにディレクトリをマウントすることです。
$ cd projects/app1
$ mkdir shared
$ Sudo mount -o bind ../shared shared/
添付します../shared
から./shared
およびシステムに対して完全に透過的である必要があります。 man mount
:
バインドがマウントされます。
Linux 2.4.0以降では、ファイル階層の一部を別の場所に再マウントすることが可能です。呼び出しは次のとおりです。
mount --bind olddir newdir
または、このfstabエントリを使用して:
/olddir /newdir none bind
この呼び出しの後、同じコンテンツに2か所でアクセスできます。