私は私のiOS開発ビルドを合理化し、Dockerについて読んでいます。
私がそれを正しく理解していれば、すべての依存関係を含むイメージを作成でき、他の開発者がそれをプルしてその中にビルドできます。
ポイントは今ですが、これはFastlane(私の考えているXcode CLIツールを使用します)および「Mac用Docker」でも動作しますか?
また、私はReact-Nativeを使用していますが、これはnativeビルドに含まれるJavaScriptをバンドルするための2番目のプロセスを開始し、Dockerは1つのプロセスしか許可しないことを読み取りますが、これは問題です?
Dockerの使用に関する問題は、Mac用のDockerを使用しても、macOSベースのイメージにアクセスできないことです。 Dockerは xhyve と呼ばれる軽量の仮想マシンで実行されます-少なくともMac用のDockerパッケージを介してdockerをインストールする場合-MacでLinuxを実行します。
基本的に、これが意味することは、Dockerコンテナーが非Xcode機能に制限されることです。これは、少なくとも重要な作業がなければ、絶対にできないことです。
codesign
で署名するDockerコンテナーを潜在的に使用できるものは次のとおりです。
deliver
を使用)match
、cert
、pem
およびsigh
)全体として、おそらく非常に制限されます。代わりに、Gemfile
やBrewfile
などを使用してすべての依存関係を一覧表示し、setup.sh
およびbrew bundle
を実行して同僚のマシンにインストールする小さなbundle install
スクリプトを作成することをお勧めします。 (Xcodeのスクリプトビルドフェーズを使用して)ビルド中にこれらを実行するように設定して、ビルドに必要なものを誤ってインストールするのを忘れないようにすることもできます。
そうは言っても、作業中のfast-lane Dockerイメージがあります hereDocker Hub でも利用できます。ファストレーンテスト(macOS専用ソフトウェアに依存しない)を実行するためにテストされたことがあるので、実際にファストレーンを確実に実行するとは主張していないことに注意してください。
Dockerを読むと1つのプロセスしか許可されません
Dockerは複数のプロセスを許可しますが、複数のメインプロセスを許可しません。メインプロセスが他のすべてを停止し、コンテナーがそれで停止した場合。依存関係をインストールするためにそれを使用して、長期実行サービスをホストする代わりにそれらを使用する1回限りのコマンドを実行できるようにしたい場合は、docker run
を使用していつでも実行できます。
docker run <repo/image:tag> <your_command>
または、インタラクティブなシェルをコンテナに起動します。
docker run -it <repo/image:tag> /bin/bash