どうも、おはようございます。
最近、勤め先の研修でpaizaのスキルチェックのような形式でコーディングテストを受けています。
「回答は https://paiza.io/ja/projects/new で実行できること」という制限があり、多重ループを乱用したりして力技で解こうとすると「メモリが足りません」とか「タイムアウトしましたとか」で怒られるので、ちゃんとアルゴリズムを考えないとだめなので苦労していますが勉強になっています。
プログラミング言語は好きなものを選んでよいのでPythonかJavaScriptでやろうと思ったのですが、勉強のためにあえてRubyを選びました。
Rubyは初めてなので勝手がわからず、とりあえずMac OSにrbenvとRuboCopをインストールして取り組んでいます。
でも、なんとなく環境をdockerで用意したいなと思ったので、早起きしてDockerfileを書いてみました。
RubyとRuboCopとGitが動けばOKの最小構成にしたいので、以下のような感じです。
Dockerfile
FROM alpine:3.7
MAINTAINER syousei <ishimaru.masato@gmail.com>
RUN apk update && \
apk upgrade && \
apk add --no-cache \
bash \
curl-dev \
ruby-dev \
build-base \
git \
ruby \
ruby-irb \
ruby-io-console \
ruby-rdoc \
ruby-bundler
RUN mkdir /usr/app
WORKDIR /usr/app
COPY Gemfile /usr/app/
COPY Gemfile.lock /usr/app/
RUN bundle install
bash
$ ls
Dockerfile
Gemfile
Gemfile.lock
Gemfile
source 'https://rubygems.org'
gem 'rubocop', require: false
※ Gemfile.lock
は空
で、buildしてrunします。
$ docker build -t syousei/dev .
$ docker run -v [host path]:/usr/app -it syousei/dev
bash
/usr/app # ruby -v
ruby 2.4.3p205 (2017-12-14 revision 61247) [x86_64-linux-musl]
/usr/app # rubocop -v
0.52.1
/usr/app # git --version
git version 2.15.0
以上です。