phusion/baseimage-dockerを使ったDocker開発環境のbaseimageを作りました。Docker Hub Registryに公開しています。Caskでパッケージをインスト-ルしたEmacs/Eclimをエディタに使い、Scala、Dart、Go、Ruby、Python、Node.js、Clojureの開発ができます。
Dockerfile
GitHubのリポジトリはmasato/baseimageです。
秘密鍵はphusionのinsecure_keyを使っているので、プロダクション環境では使わないでください。
| $ curl -o insecure_key -fSL https://github.com/phusion/baseimage-docker/raw/master/image/insecure_key$ chmod 600 insecure_key
 
 | 
Dockerfileです。
| FROM phusion/baseimage:0.9.15MAINTAINER Masato Shimizu <ma6ato@gmail.com>
 
 ENV RUBY_VERSION 2.1.5
 ENV TYPESAFE_VERSION 1.2.10
 
 
 ENV HOME /root
 
 
 RUN /etc/my_init.d/00_regen_ssh_host_keys.sh
 
 
 RUN /usr/sbin/enable_insecure_key
 
 
 RUN apt-get update && \
 DEBIAN_FRONTEND=noninteractive \
 apt-get install -y build-essential software-properties-common \
 zlib1g-dev libssl-dev libreadline-dev libyaml-dev \
 libxml2-dev libxslt-dev sqlite3 libsqlite3-dev \
 emacs24-nox emacs24-el git byobu wget curl unzip tree \
 python-dev python-pip golang nodejs npm \
 openjdk-7-jdk ant maven \
 xvfb xfonts-100dpi xfonts-75dpi xfonts-scalable xfonts-cyrillic
 
 
 ENV LANG ja_JP.UTF-8
 RUN locale-gen $LANG && update-locale $LANG && \
 ln -sf /usr/share/zoneinfo/Asia/Tokyo /etc/localtime
 
 
 RUN update-alternatives --set editor /usr/bin/vim.basic
 
 
 RUN useradd -m -d /home/docker -s /bin/bash docker && \
 echo "docker:docker" | chpasswd && \
 mkdir /home/docker/.ssh /home/docker/tmp && \
 chmod 700 /home/docker/.ssh && \
 cp /root/.ssh/authorized_keys /home/docker/.ssh && \
 chmod 600 /home/docker/.ssh/authorized_keys && \
 chown -R docker:docker /home/docker/.ssh && \
 echo "export LANG=ja_JP.UTF-8" >> /home/docker/.profile && \
 echo "docker ALL=(ALL) NOPASSWD:ALL" >> /etc/sudoers
 
 
 RUN git clone https://github.com/sstephenson/ruby-build.git .ruby-build && \
 .ruby-build/install.sh && \
 rm -fr .ruby-build && \
 ruby-build $RUBY_VERSION /usr/local && \
 gem update --system && \
 gem install bundler --no-rdoc --no-ri
 
 
 RUN ln -s /usr/bin/nodejs /usr/bin/node
 
 ENV USERNAME docker
 ENV HOME /home/${USERNAME}
 ENV PATH $PATH:${HOME}/bin
 
 ADD dotfiles ${HOME}
 RUN chown -R ${USERNAME}:${USERNAME} ${HOME}
 
 USER ${USERNAME}
 WORKDIR ${HOME}
 
 
 RUN mkdir -p ${HOME}/gocode/src ${HOME}/gocode/bin ${HOME}/gocode/pkg && \
 echo 'export GOPATH=${HOME}/gocode' >> ${HOME}/.profile && \
 echo 'export PATH=${PATH}:${HOME}/gocode/bin' >> ${HOME}/.profile
 
 
 
 RUN wget http://storage.googleapis.com/dart-archive/channels/stable/release/latest/sdk/dartsdk-linux-x64-release.zip -P ${HOME} && \
 unzip ${HOME}/dartsdk-linux-x64-release.zip -d ${HOME} && \
 echo 'export PATH=${PATH}:${HOME}/dart-sdk/bin' >> ${HOME}/.profile && \
 rm ${HOME}/dartsdk-linux-x64-release.zip
 
 
 RUN mkdir -p ${HOME}/bin && \
 wget http://downloads.typesafe.com/typesafe-activator/${TYPESAFE_VERSION}/typesafe-activator-${TYPESAFE_VERSION}.zip -P ${HOME} && \
 unzip ${HOME}/typesafe-activator-${TYPESAFE_VERSION}.zip -d ${HOME} && \
 ln -s ${HOME}/activator-${TYPESAFE_VERSION}/activator ${HOME}/bin/activator && \
 rm ${HOME}/typesafe-activator-${TYPESAFE_VERSION}.zip
 
 
 RUN curl -fsSkL https://raw.github.com/cask/cask/master/go | python && \
 /bin/bash -c 'echo export PATH="${HOME}/.cask/bin:$PATH" >> ${HOME}/.profile' && \
 /bin/bash -c 'source ${HOME}/.profile && cd ${HOME}/.emacs.d && cask install'
 
 
 RUN wget -P ${HOME} http://ftp.yz.yamagata-u.ac.jp/pub/eclipse/technology/epp/downloads/release/luna/R/eclipse-java-luna-R-linux-gtk-x86_64.tar.gz && \
 tar xzvf ${HOME}/eclipse-java-luna-R-linux-gtk-x86_64.tar.gz -C ${HOME} && \
 mkdir ${HOME}/workspace && \
 cd ${HOME} && git clone git://github.com/ervandew/eclim.git && \
 cd eclim && ant -Declipse.home=${HOME}/eclipse && \
 rm ${HOME}/eclipse-java-luna-R-linux-gtk-x86_64.tar.gz
 
 
 RUN curl -s https://raw.githubusercontent.com/technomancy/leiningen/2.5.0/bin/lein > \
 ${HOME}/bin/lein && \
 chmod 0755 ${HOME}/bin/lein
 ENV LEIN_ROOT 1
 RUN lein
 ADD dotfiles/.lein/profiles.clj ${HOME}/.lein/
 
 USER root
 ENV HOME /root
 WORKDIR /root
 
 ADD sv /etc/service
 CMD ["/sbin/my_init"]
 RUN apt-get clean && rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/*
 
 |