From 6f8f9072f83c9041f293059dd13938301fc8e95e Mon Sep 17 00:00:00 2001 From: mpd Date: Sat, 29 Jul 2017 17:18:49 -0700 Subject: [PATCH] dockerize --- Dockerfile | 30 ++++++++++++++++++++++++++++++ README.md | 3 +++ docker-compose.yml | 9 +++++++++ fakeimage.rb | 13 +++++++------ public/favicon.ico | Bin 0 -> 3274 bytes 5 files changed, 49 insertions(+), 6 deletions(-) create mode 100644 Dockerfile create mode 100644 docker-compose.yml create mode 100644 public/favicon.ico diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..100ec3c --- /dev/null +++ b/Dockerfile @@ -0,0 +1,30 @@ +FROM library/ruby:2.4.1-slim +MAINTAINER Michael Dungan + +RUN gem update bundler && \ + apt-get update && \ + apt-get install -y \ + build-essential \ + git \ + libmagickcore-dev \ + libmagickwand-dev \ + wget && \ + wget -O /usr/local/bin/dumb-init https://github.com/Yelp/dumb-init/releases/download/v1.2.0/dumb-init_1.2.0_amd64 && \ + chmod +x /usr/local/bin/dumb-init && \ + mkdir /srv/fakeimage + +COPY Gemfile /srv/fakeimage +COPY Gemfile.lock /srv/fakeimage +WORKDIR /srv/fakeimage +RUN bundle config github.https true && \ + bundle install && \ + apt-get clean && \ + apt-get remove -y build-essential git && \ + apt-get purge && \ + apt-get autoremove -y + +COPY . /srv/fakeimage + +EXPOSE 4567 + +CMD ["dumb-init", "ruby", "fakeimage.rb", "-o", "0.0.0.0"] diff --git a/README.md b/README.md index 3d0fb19..baa26ba 100644 --- a/README.md +++ b/README.md @@ -13,6 +13,9 @@ bundle ruby fakeimage.rb (or your rack-app-handler of choice) ``` +A `Dockerfile` and `docker-compose.yml` are included in the distribution if preferred. Getting up and running +locally should require nothing more than `docker-compose up` in that case. + ## Use In a browser, hit `http://localhost:4567/300x200` for example, or change bg and text colors by passing them as GET params: diff --git a/docker-compose.yml b/docker-compose.yml new file mode 100644 index 0000000..1270bf6 --- /dev/null +++ b/docker-compose.yml @@ -0,0 +1,9 @@ +version: '3' +services: + fakeimage: + image: xxx/fakeimage + build: + context: . + ports: + - "4567:4567" + restart: always diff --git a/fakeimage.rb b/fakeimage.rb index 4f7ae7a..5a8704a 100644 --- a/fakeimage.rb +++ b/fakeimage.rb @@ -1,5 +1,6 @@ # frozen_string_literal: true +require 'logger' require 'sinatra' require 'rmagick' require 'rvg/rvg' @@ -10,6 +11,8 @@ 'jpg' => 'jpeg' }.freeze +LOGGER = Logger.new(STDOUT) + get '/' do "

Welcome to fakeimage.

Please see the README (specifically the 'Use' section) at http://github.com/xxx/fakeimage for usage info so I don't have a chance to let one of the copies get out of date.

Example:

Code: <img src='http://fakeimage.heroku.com/243x350.gif?color=darkorchid2&textcolor=!B9AF55' />" end @@ -44,6 +47,8 @@ content_type "image/#{format}" img.to_blob rescue Exception => e + LOGGER.error("#{e}: #{e.backtrace}") + "

Something broke. You can try this simple test. If this error occurs there as well, you are probably missing app dependencies. Make sure RMagick is installed correctly. If the test works, you are probably passing bad params in the url.

Use this thing like http://host:port/200x300, or add color and textcolor params to decide color.

Error is: [#{e}]

" end end @@ -52,10 +57,6 @@ def color_convert(original) return unless original - - if original.index('!').zero? - original.tr('!', '#') - else - original - end + return original.tr('!', '#') if original.index('!') == 0 + original end diff --git a/public/favicon.ico b/public/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..25745146b326be9b23b90f200a2ec0a36427e9a3 GIT binary patch literal 3274 zcmZ{m2{e>@8^B+(M;N=%2w5`BVwsu3HH|GsQC!=-jF~Yr7~70cl59nDm9>cp`I2td zB-$hi$u@`1=}o$~#qNcS(}1GXVh39s+>a z1OV6oO|dfo5Do``&prTv_hoQ zeszIo>u#ji>;_tVpHP6lt2^5SJ-*aQtj5KPywYLE^HL>Nc}}$&ga_2xfv^h~+RiYq zZZEA#=p;IeSxN~OLJF-j`_Xfv!!kJQrF})l&2HRqMcHBMBdHMcQEp>Ov*IyXMPIUt z#xEnhRWpVuZ(;xEvu#s9Qs>vyHWwr>;4@=g3ot5Kwve>(l5XWil^YfU&dt{n#pTqQ zYWWHr{eqiTNeNv@0YMK`s@bs-nNx*}*pKHMpAX-!h%nkzKKFgiEIC1uPvW?!$Kh(E ztutN;;X%r3-fy2xQ6#;NPBP6?O}Z^GuiAX>6WaHt#;wXu>G8+{O|6Yv#R1As%8LTl zS--^BJ$`OUe-T?F7GU(NXV`(t{`6@<7bho*7GvmI&t)rAC?=cjS6e*0Mt&e_`BQGJ z{1sd%GrXm|jJ}zd0B=sKnO988Bhr#XUzjlB5kdh*dh~CDs5ZTRZTn6&?tKq^Cs8t6 zd>+u1j{BGX;f0_Gj(_X+l#nHdEaT-`z|~s5I2ie3X+!(trmEAyd0uzK9+HZkZn~y# zFT61ESZK1kPRr5!Fs$b(PTa=x2HJ18U-4E2rg?AfKOX6B;Unq$8bLG&y*w*RjJ=8m zM7>unSDZ0`WbYYA!&5a>4!1*O?k0%P7>JLk+%lkRwGSL5GS`vgczBIoQ11C8)Q5H? zJ*kx2^D1p<2&UW-f62Q+$7`{sy78x9$)zhPW616WA>R~{OOaxgx?1U)nX##&a)~vn zO9sg1RHGWBaPpURwv%G@tt;mi78l@R{n*NZg~!hyYc%6^4(Z&SNy@%0J_Nm;se@}S zA5J@XTL8ze^sdBOr}&hPnwjA742ysT=yxIB;#x&-n(l+|+ye zoJ^%*_d}Bjc5lB}yOqB?dcM-vKQXs!dTVW9gsC8B5wq_7meJPNCwTo`ZD7rjZ=fMr=*hUTDjh)j%#jQmQAJZ9yNKc%+sTxyA2?SYZ6+ma*9n1@C4 za=jnoye&56T#Yhj#Ytw`%Sy}l3SS=`rn7r2sA_h}nUHL6l|_}3u!gsCnxiEd>E}aq z6gXLebK2ghOlHoL@k={DE?#$A+mxXE&hwx6(0J+D+3)Ek9THdb>V0O8ILf13i?yG{ zEaxzWq)7bIF?W9K@V%~LSLB;b^(}j&#M35M5}t0t+H9^yRbw?Kwemm9Z~DA>FtQ^t z621A3TvViIoNrM-HWt`wvDItwEq`azf>S!NHGjgPSSIiMcBX-eQH2F`9-!g(4f()C zyGQGa-N3?U(BItq zm*s_y6Q$V!@@>LiBmG<7TMm3*nbJPK&K>l~UKY)dJ0uZ@Q{~esWr|T`UF6*I9ipnu zi^MP$5eFVUdo;E^uzu7l&!?^_+}OoEY&EKJ-J)*%>CPV!cU&wzO}XB~(2rG|?3Jhc z^{mB;m-^u=F!mlx(RlfENP4VhWrJ|0P!_}^p{iZ?_=y`zJ?{%C69Woek*h0+pB1ie zeeI>bMZ*Ul4jLQ(+|RsFOY&ZnPB=UrS)~*8HKKkz!`Ojouj2oS=PQK_u%$t8kOsd7 zANIlJq)`D?;por2c{43oMc##`WrY*&hS#5++ey8$d}3l*RHpA=1oFTz3JzJltTV=P zuH;U%Q{_CYQ`%oV(r(Hd-6mG)rQYLIW<8|AgdNVeRn}?EFK~|hG1Zzw*1!KDG~B#0 zz=WFz`>I~aXKN;&tlz62ZS9oJZ7&vB{16<>kAF7?EBi}yJ&QM!S9RGb2kk2ywu*$`+s`h`%pDh_RUKm`DnyxE4ysr znIrOTDZRpn*TzNgaqrM`QZYi%_eiFWmSV|lPSVxs>1emI$kjg(7glHZ#$(zDL!WS# z2;HciS?*kJHlt2E<(9&=F?ea<>C188jN|<<`AE-pdQkaS*9>8M>;`c0*#7K>3*9)p zQ-s;|T-aPkQnG8Q0t)wQnnP#PnKmh#GlXNN_#Ab_A@y*v0NG|1_!W>0aCBu>-MhX2 z?3t%94@S*TW+i_%GJbvpDxl7q0+WgCb9U-$c$``;4r zszx5NI)tHWuOSBdroNj6c5H1yejAaN7;8LFoJ&qN*E-EVceHnwJsI8Lk06<}eyCMF zWF^4RK7cai%Z!g(9>+Oc%QU~6xmR&ol+wU@tXW~e=@1IaRdYJWQ!9de zjKU#`xcY7togBg)fwCDbXIgy34_m|ABx#Wr_iLC-&KpaXJ8VapOsS`-LEafty9Z8F ztFFR;5JlzIYr6B5TKPqNclR{HUcU$Fbm>Z6%K>R1cv~U8_x?tPh#jQgeLaz18q))v z;n3!CYUW-jfAfDC{T#~mj&+u`vb4~%mX2PMr8N0Q;hcn^J+;y|A;a{OE%oL`ABm^Z zS?w>RW1T;XjMA>(B-L>;qE47vp_t5BRjuaB_nI0xPDeCfAJy034$LUB) z)xkf0l1CyTH~Lx9rTvNlsq1M1}bgNvz;702ztYM?@la#ctzHHON};vdmyV zRs=DO0@yK#R0@GerIP}nCI+SkXcz_x_HG1&8^aJts1w2jN@KA?u!e>a5fKLTT^baS zHV6)*4kpcm2?533jHhYg3|}l3A502oP=Z)k>`4%10*K|m$YzO$!11aG04H-eKz+kGO zAMp&G6dc4f{O=AMnov+=GzRT!iZn6BP{_t443b17!_g>=F&T+M6Ai!!1F*kI{ms2# z1^e9!k;D)J;jeMo;Q=B!*q4GO2b1VzYzQrw70jdshhR-e;NnrfXqbs984g1r$Y>Z5 hO#*j`XiV`X6EP-4grDqz_$e?gU}xosFUR@B{TrE>rXm0U literal 0 HcmV?d00001