読者です 読者をやめる 読者になる 読者になる

devenv-docker更新

dotfileの永続化問題が困ったことに。 .gitconfigとかが自動で永続化したいわけだが、ゲストの$HOMEを-vコマンドでマウントしちゃうと githubからcloneしてきたdotfilesとかが消えてしまう。

-v $HOME:$HOME -e HOME=$HOMEとやると、sshの$HOME認識できない問題で引っかかる。

というわけでこんな感じに。dotfilesはホストのものを使うと割り切ることにしました。

FROM ubuntu:16.04
MAINTAINER inon3135

ENV USER_NAME devenv
ENV CONTAINER 1

# user add
RUN useradd -s /bin/zsh $USER_NAME
RUN mkdir /docker_home \
    && chown -R $USER_NAME /docker_home
ENV HOME /docker_home
RUN sed -i -e "s|/home/$USER_NAME|$HOME|g" /etc/passwd

# install applications
RUN apt-get update \
    && apt-get install -y \
       vim \
       vim-gnome \
       git \
       zsh \
       ssh \
       curl \
       python \
       wget \
       unzip \
       language-pack-ja-base \
       language-pack-ja \
    && rm -rf /var/lib/apt/lists/*

# install gcloud-sdk
ENV CLOUDSDK_PYTHON_SITEPACKAGES 1
RUN wget https://dl.google.com/dl/cloudsdk/channels/rapid/google-cloud-sdk.zip \
    && unzip google-cloud-sdk.zip \
    && rm google-cloud-sdk.zip

RUN google-cloud-sdk/install.sh \
    --usage-reporting=true \
    --path-update=true \
    --bash-completion=true \
    --rc-path=/docker_home/.zshrc \
    --additional-components \
    app-engine-python \
    app \
    kubectl \
    alpha \
    beta \
    gcd-emulator \
    pubsub-emulator \
    cloud-datastore-emulator \
    app-engine-go \
    bigtable

RUN chown $USER_NAME /docker_home/.zshrc

# Disable updater check for the whole installation.
# Users won't be bugged with notifications to update to the latest version of gcloud.
RUN google-cloud-sdk/bin/gcloud config set --installation component_manager/disable_update_check true

# path to gcloud
ENV PATH /google-cloud-sdk/bin:$PATH

USER $USER_NAME

CMD /bin/zsh