-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathDockerfile.old
More file actions
135 lines (125 loc) · 3.49 KB
/
Dockerfile.old
File metadata and controls
135 lines (125 loc) · 3.49 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
FROM alpine:3.3
# skip installing gem documentation
RUN mkdir -p /usr/etc \
&& { \
echo 'install: --no-document'; \
echo 'update: --no-document'; \
echo 'gempath:'; \
echo ' - /usr/bin'; \
} >> /usr/etc/gemrc
ENV RUBY_MAJOR 2.3
ENV RUBY_VERSION 2.3.0
ENV RUBY_DOWNLOAD_SHA256 ba5ba60e5f1aa21b4ef8e9bf35b9ddb57286cb546aac4b5a28c71f459467e507
ENV RUBYGEMS_VERSION 2.6.1
# some of ruby's build scripts are written in ruby
# we purge this later to make sure our final image uses what we just built
RUN set -ex \
&& apk add --no-cache --virtual .ruby-builddeps \
autoconf \
bison \
bzip2 \
bzip2-dev \
ca-certificates \
coreutils \
curl \
gcc \
gdbm-dev \
glib-dev \
libc-dev \
libedit-dev \
libffi-dev \
libxml2-dev \
libxslt-dev \
linux-headers \
make \
ncurses-dev \
openssl-dev \
procps \
ruby \
yaml-dev \
zlib-dev \
&& curl -fSL -o ruby.tar.gz "http://cache.ruby-lang.org/pub/ruby/$RUBY_MAJOR/ruby-$RUBY_VERSION.tar.gz" \
&& echo "$RUBY_DOWNLOAD_SHA256 *ruby.tar.gz" | sha256sum -c - \
&& mkdir -p /usr/src \
&& tar -xzf ruby.tar.gz -C /usr/src \
&& mv "/usr/src/ruby-$RUBY_VERSION" /usr/src/ruby \
&& rm ruby.tar.gz \
&& cd /usr/src/ruby \
&& { echo '#define ENABLE_PATH_CHECK 0'; echo; cat file.c; } > file.c.new && mv file.c.new file.c \
&& autoconf \
# the configure script does not detect isnan/isinf as macros
&& ac_cv_func_isnan=yes ac_cv_func_isinf=yes \
./configure --disable-install-doc \
&& make -j"$(getconf _NPROCESSORS_ONLN)" \
&& make install \
&& runDeps="$( \
scanelf --needed --nobanner --recursive /usr \
| awk '{ gsub(/,/, "\nso:", $2); print "so:" $2 }' \
| sort -u \
| xargs -r apk info --installed \
| sort -u \
)" \
&& apk add --virtual .ruby-rundeps $runDeps \
bzip2 \
ca-certificates \
curl \
libffi-dev \
openssl-dev \
yaml-dev \
procps \
zlib-dev \
&& apk del .ruby-builddeps \
&& gem update --system $RUBYGEMS_VERSION \
&& rm -r /usr/src/ruby
ENV BUNDLER_VERSION 1.11.2
#install bundler gem
RUN gem install bundler --version "$BUNDLER_VERSION" --no-ri --no-rdoc
# install things globally, for great justice
# and don't create ".bundle" in all our apps
ENV GEM_HOME /usr
ENV BUNDLE_PATH="$GEM_HOME" \
BUNDLE_BIN="$GEM_HOME/bin" \
BUNDLE_SILENCE_ROOT_WARNING=1 \
BUNDLE_APP_CONFIG="$GEM_HOME"
ENV PATH $BUNDLE_BIN:$PATH
RUN mkdir -p "$GEM_HOME" "$BUNDLE_BIN" \
&& chmod 777 "$GEM_HOME" "$BUNDLE_BIN"
RUN apk --update add openssh \
&& sed -i s/#PermitRootLogin.*/PermitRootLogin\ yes/ /etc/ssh/sshd_config \
&& echo "root:root" | chpasswd \
&& ssh-keygen -A
#add debug gems
RUN set -ex \
&& apk add --no-cache --virtual .gem-builddeps \
autoconf \
bison \
bzip2 \
bzip2-dev \
ca-certificates \
coreutils \
curl \
gcc \
gdbm-dev \
glib-dev \
libc-dev \
libedit-dev \
libffi-dev \
libxml2-dev \
libxslt-dev \
linux-headers \
make \
ncurses-dev \
openssl-dev \
procps \
ruby \
yaml-dev \
zlib-dev \
&& gem install ruby-debug-ide --pre --no-ri --no-rdoc \
&& gem install debase --pre --no-ri --no-rdoc \
&& gem install debug_inspector --no-ri --no-rdoc \
&& gem install binding_of_caller --no-ri --no-rdoc \
&& apk del .gem-builddeps
#add openssl & bash
RUN apk add --update bash openssl && rm -rf /var/cache/apk/*
RUN mkdir /root/.bundle/ && \
echo -e '---\nBUNDLE_PATH: /usr' > /root/.bundle/config