/ docker

Retservo por HTML aŭ JSON dum dek minutoj

Mi scivolis kiom longe mi bezonis por krei retservo de mia unua ideo ĝis kiam mi povas vidi ĝin en mia retumilo. 10 minutoj estis la respondo kaj mi metis kiel suben.

Antaŭpreparado: Mi uzas Docker por kelkaj retpaĝoj kiujn mi gastigas, do mi jam havas la bazstrukturo por tio. Ĝi ekzemplo uzos la Sinatra etkadro en Ruby kaj la JSON-a kromprogramo.

En dosiero nomita Dockerfile

FROM ruby:2.2.1

RUN apt-get update && \
    apt-get install -y net-tools && \
    rm -rf /var/lib/apt/lists/*

# Instali gems
ENV PROGRAMA_HEJMO /app

RUN mkdir $PROGRAMA_HEJMO
WORKDIR $PROGRAMA_HEJMO
COPY Gemfile* $PROGRAMA_HEJMO/
RUN bundle install

# Alŝuti fonton
COPY . $PROGRAMA_HEJMO

# Starti servilon
ENV PORT 80
EXPOSE 80
CMD ["ruby", "saluton.rb"]

En dosiero nomita saluton.rb

require 'sinatra'
require 'sinatra/json'

set :bind, '0.0.0.0'
set :port, 80

get '/' do
  "Saluton #{params[:nomo]}".strip
end

get '/index.json' do
  json { nuna_tempo: Time.new }
end

Por konstrui la aufs-a kopio:

$ docker build -t uzantnomo/saluton .

kaj puŝi ĝin al Dockerhub

$ docker push uzantnomo/saluton

Mi instalis la imagon je Docker servilon kaj alidirektis DNS al la nova servilo. Por kontroli mi uzis Restclient en Emakso:

GET http://servilo.com/index.json

{
  "nuna_tempo": "2016-03-21 13:58:57 +0000"
}

GET http://servilo.com/

Saluton

GET http://servilo.com/?nomo=Zamenhof

Saluton Zamenhof

De tie Sinatra estas malgranda kadraĵo por komenci projekton. Se la projekto estos pli granda eble Rails estus pli bona, sed oni bezonas pli da antaŭpreparado. Iukaze, mi nun havas kadron por krei retservon rubenan kaj meti ĝin surrete publike dum 5 minutoj.