-
Notifications
You must be signed in to change notification settings - Fork 8
Expand file tree
/
Copy pathDockerfile.dev
More file actions
111 lines (84 loc) · 2.41 KB
/
Dockerfile.dev
File metadata and controls
111 lines (84 loc) · 2.41 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
FROM debian:13 AS asdf_install
ARG USER_ID=1000
ARG GROUP_ID=1000
ENV ASDF_VERSION=v0.18.0
ENV ASDF_PLATFORM=amd64
ENV ASDF_URL=https://github.com/asdf-vm/asdf/releases/download/$ASDF_VERSION/asdf-$ASDF_VERSION-linux-$ASDF_PLATFORM.tar.gz
ENV PATH="/home/me/.asdf/shims:/home/me/.asdf/bin:$PATH"
WORKDIR /home/me/app
COPY .tool-versions /home/me/.tool-versions
RUN <<SETUP
apt-get update --quiet --yes
BASE_DEPS="wget curl git"
RUBY_DEPS="ruby-build libffi-dev libyaml-dev"
LINUX_BUILD_DEPS="build-essential "
apt-get install --quiet --yes \
${BASE_DEPS} \
${RUBY_DEPS} \
${LINUX_BUILD_DEPS}
SETUP
RUN <<LOGIN
groupadd --gid ${GROUP_ID} mygroup
useradd -ms /bin/bash me --uid ${USER_ID} --gid ${GROUP_ID}
chown -R me /home/me
LOGIN
USER me
RUN <<ASDF
wget -O /home/me/asdf.tar.gz "${ASDF_URL}"
tar xfv /home/me/asdf.tar.gz
mkdir -p /home/me/.asdf/bin/
mv asdf /home/me/.asdf/bin/asdf
ASDF
RUN asdf plugin add ruby && asdf install ruby
FROM debian:13
ARG USER_ID=1000
ARG GROUP_ID=1000
ENV PATH="/home/me/.asdf/shims:/home/me/.asdf/bin:$PATH"
RUN <<SETUP
apt-get update --quiet --yes
BASE_DEPS="curl git bear"
LLVM_DEPS="lsb-release gnupg"
RUBY_DEPS="ruby-build libffi-dev libyaml-dev"
LINUX_BUILD_DEPS="build-essential "
WINDOWS_BUILD_DEPS="mingw-w64"
TEST_DEPS="unzip wget"
WINDOWS_TEST_DEPS="wine"
WEB_TEST_DEPS="firefox-esr"
apt-get install --quiet --yes \
${BASE_DEPS} \
${LLVM_DEPS} \
${RUBY_DEPS} \
${LINUX_BUILD_DEPS} \
${WINDOWS_BUILD_DEPS} \
${TEST_DEPS} \
${WINDOWS_TEST_DEPS} \
${WEB_TEST_DEPS}
SETUP
RUN <<LLVM
wget https://apt.llvm.org/llvm.sh
chmod +x llvm.sh
./llvm.sh 21
apt-get install --quiet --yes \
clang-format-21 \
clang-tidy-21
ln -s $(which clang-format-21) /usr/local/bin/clang-format
ln -s $(which clang-tidy-21) /usr/local/bin/clang-tidy
LLVM
WORKDIR /home/me/app
# Setup the group and user to match your local system
RUN <<LOGIN
groupadd --gid ${GROUP_ID} mygroup
useradd -ms /bin/bash me --uid ${USER_ID} --gid ${GROUP_ID} --password $(perl -e 'print crypt($ARGV[0], "password")' 'password')
adduser me sudo
chown -R me /home/me
LOGIN
USER me
COPY --from=asdf_install /home/me/.asdf /home/me/.asdf
COPY .tool-versions /home/me/.tool-versions
RUN <<SETUP
echo "export PATH=\"${ASDF_DATA_DIR:-$HOME/.asdf}/shims:$PATH\"" >> /home/me/.bashrc
echo ". <(asdf completion bash)" >> /home/me/.bashrc
gem install bundler
bundle config set path vendor/bundle
SETUP
CMD ["sleep", "infinity"]