Docker コンテナ内で一般ユーザで処理を行わせようとすると、権限の問題でうまくいかないことがありました。その時は、仕方がないので sudo の設定を入れて回避しました。
後々別方法でことが足りたのですが、ここにその時の設定方法をメモしておきます。
処理の一部を抜粋
befor
docker run コマンドでローカルのユーザにて処理をさせたかったのですが...指定方法がわからず docker コンテナ内で sudo コマンドを使ってムリムリユーザ指定させてしまいました。
UID := $(shell id -u) GID := $(shell id -g) ADD_SUDO_CMD := apk add sudo ; addgroup -S ${GID}; adduser -S -u ${UID} -G ${GID} ${UID}; \ echo ${UID} ALL=\(ALL\) NOPASSWD:ALL >>/etc/sudoers; \ echo ${UID}:${UID} | chpasswd;echo 'Defaults visiblepw' >>/etc/sudoers DOCKER_IMAGE := ***** DOCKER_RUN := docker run -t --rm -v $(PWD):/v -w /v --net=host $(DOCKER_IMAGE) $(DOCKER_RUN) sh -c "$(ADD_SUDO_CMD); sudo su ${UID} -s /bin/sh -c \"$(BUILD)\""
after
docker コマンドでユーザ指定オプション(-u)があったので、以下の方法の方がいいことを後々知りました。
UID := $(shell id -u) GID := $(shell id -g) DOCKER_IMAGE := ***** DOCKER_RUN := docker run -t --rm -u $(UID):$(GID) -v $(PWD):/v -w /v --net=host $(DOCKER_IMAGE) $(DOCKER_RUN) sh -c "$(BUILD)"