docker-blog

こんな感じで構築してるけど、アンチパターンぽい。

FROM archlinuxjp/archlinux:start

RUN mkdir -p /root/.ssh
RUN mkdir -p /root/bin
ADD .zshrc /root
ADD bin/script /root/bin
ADD .ssh/config /root/.ssh
ADD .ssh/id_rsa /root/.ssh
RUN chmod 700 /root/.ssh/id_rsa
RUN /bin/cp -f /usr/share/zoneinfo/Asia/Tokyo /etc/localtime

RUN pacman -Syu --noconfirm
RUN pacman -Scc --noconfirm
RUN pacman -S base-devel git zsh openssh --noconfirm
RUN pacman -S curl nodejs npm which --noconfirm

RUN npm i gulp -g

CMD /bin/zsh

RUN git config --global user.email "$USER@users.noreply.github.com"
RUN git config --global user.name "$USER"

ENV PATH $PATH:/root/bin

RUN git clone $HOST/$USER/$REPO.git
RUN which script

.ssh/configはこんな感じで。

Host gitlab.com
	RSAAuthentication yes
	IdentityFile ~/.ssh/id_rsa
	User syui
	TCPKeepAlive yes
	identitiesonly yes
	StrictHostKeyChecking no

特に、SSH Keyが良くなくて、本来ならENV GITHUB_TOKEN XXXXXXXとしてからgit clone,push ${GITHUB_TOKEN}@github.com/$USER/$REPOなどとすべきなんだけど、GitLabのACCESS_TOKENの使い方がよくわからんということで。

なぜダメなのかというと、一つはDocker Hubでプライベートにしててもアクセスがコントロールできてなくて危険だから。

SSHとACCESS TOKENでの違いはアクセス制限というか、そういったコントロールが可能で、ACCESS TOKENでのアクセスのほうがより安全。

ただ、Docker HubにAccess Tokenを置くこと自体危険だとも言えるのだけど、正直、このような全部の処理を外部サービスに任せる開発フローではどうしても危険性が増えてしまう気がする。

個人的にはDocker Hubには二段階認証及び、Access Tokenの発行ができるようになればより安心して使える気がする。