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の発行ができるようになればより安心して使える気がする。