Dockerfile の ARG に対する値入力
--build-arg <変数名>=<値>
複数の場合は1つずつ。
--build-arg <変数名1>=<値> --build-arg <変数名2>=<値>
Docker外とDoker内で作業ユーザを一致させたい
この方法が本当に最適解なのかは分からないが。Doker内に既存の一般ユーザが居ない前提。
docker buildへの指定:
--build-arg USER_ID=`id -u` --build-arg USER_GROUP_ID=`id -g` --build-arg USER_NAME=`id -un`
Dockerfile内:
ARG USER_ID ARG USER_GROUP_ID ARG USER_NAME RUN groupadd -g $USER_GROUP_ID $USER_NAME \ && useradd -u $USER_ID -g $USER_NAME -m $USER_NAME
さらに作業ディレクトリVOLUMEを作業ユーザで使えるようにする
Dockerfile内:
RUN mkdir -p /mnt/work_dir_root/workarea && chown -R $USER_NAME:$USER_NAME /mnt/work_dir_root/workarea VOLUME /mnt/work_dir_root USER $USER_NAME
VOLUMEに書いたディレクトリ直接だと(マウントポイントなので)chownが使えないので、さらに一段掘って作業エリアとする。
オンラインの参考資料 (Docker ドキュメント日本語化プロジェクト)