juliaで自作パッケージ用のdockerを作成
juliaでDockerfileなどを作成にあたり、参考にした記事やメモを残しておきます。
こちらを参考にしました。
https://github.com/terasakisatoshi/MyTemplate.jl
とりあえず、上の記事のREADMEに書いてあることをそのまま実行します。
すると、DockerFileができるので、それをそのまま自作のパッケージ用に書き換えれば良いです。
例えば、私の場合、すでに自作パッケージのQCMaterialNew(https://github.com/sakurairihito/QCMaterialNew)
が存在して、それのdockerfileなどを用意したいということでした。
ですので、上記で作成したそのままのDockerfileではなく、以下のような変更を行えば良いということになります。
RUN mkdir -p /workspace/YourPkg.jl/src && echo "module QCMaterial end" > /workspace/YourPkg.jl/src/QCMaterial.jl
COPY ./Project.toml /workspace/YourPkg.jl
上でやっていることは、/workspace/YourPkg.jl/srcというディレクトリを作成し、そこにQCMaterial.jlというファイルを作り、そこにmodule QCMaterial end
を書き込むということになります。
あとは、ご自身のパッケージに必要なファイルなどをインストールをすれば良いです。
共用のマシンでドッカー環境を構築する場合
ERROR: SystemError: opening file "/workspace/YourPkg.jl/Manifest.toml": Permission denied
共用のマシンでやる環境だと上記のエラーが発生しました。
これは、ホスト側のUIDとコンテナ内のUIDを統一すれば解決すると思われます。
ワークステーション(WS)の中でVS code + SSH + Dockerで作業ディレクトリをmountしたとき、ちゃんとUID/GIDが適切な値に変更されるようになりました。
その際に、WSの.bashrcに
mkdir -p /tmp/$USER
export TMPDIR=/tmp/$USER
を記入すれば一時的なディレクトリを作られて問題が回避できます。
詳細はこちらを参考:
https://github.com/microsoft/vscode-remote-release/issues/2347
余談:OpenMPIもコンテナ内でできた
ubuntsで、ドッカーコンテナ内で、MPI並列も実行できました。
ちなみにMacとかだとドッカーで使用できるリソースは制限されますが、Ubuntsだとその制限はないようです。
まとめ
手軽にdocker環境を構築できました。
参考