-
Notifications
You must be signed in to change notification settings - Fork 36
Expand file tree
/
Copy pathDockerfile--alpine.tmpl
More file actions
150 lines (124 loc) · 4.62 KB
/
Copy pathDockerfile--alpine.tmpl
File metadata and controls
150 lines (124 loc) · 4.62 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
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
ARG PG_VERSION=17
ARG PYTHON_VERSION=3.12
# --------------------------------------------- base1
FROM postgres:${PG_VERSION}-alpine AS base1
RUN apk add --no-cache \
coreutils \
bash \
mc \
procps \
openssh \
sshpass \
sudo \
git
RUN sed -i 's/#MaxStartups 10:30:100/MaxStartups 2000:30:2000/' /etc/ssh/sshd_config && \
sed -i 's/#MaxSessions 10/MaxSessions 500/' /etc/ssh/sshd_config && \
sed -i 's/#MaxAuthTries 6/MaxAuthTries 20/' /etc/ssh/sshd_config
# --------------------------------------------- base2_with_python-3
FROM base1 AS base2_with_python-3
RUN apk add --no-cache \
curl \
python3 \
python3-dev \
build-base \
musl-dev \
linux-headers \
# For pyenv \
patch \
xz-dev \
zip \
zlib-dev \
libffi-dev \
readline-dev \
openssl openssl-dev \
sqlite-dev \
bzip2-dev
ENV PYTHON_BINARY=python3
# --------------------------------------------- base3_with_python-3.7
FROM base2_with_python-3 AS base3_with_python-3.7
ENV PYTHON_VERSION=3.7
# --------------------------------------------- base3_with_python-3.8.0
FROM base2_with_python-3 AS base3_with_python-3.8.0
ENV PYTHON_VERSION=3.8.0
# --------------------------------------------- base3_with_python-3.8
FROM base2_with_python-3 AS base3_with_python-3.8
ENV PYTHON_VERSION=3.8
# --------------------------------------------- base3_with_python-3.9
FROM base2_with_python-3 AS base3_with_python-3.9
ENV PYTHON_VERSION=3.9
# --------------------------------------------- base3_with_python-3.10
FROM base2_with_python-3 AS base3_with_python-3.10
ENV PYTHON_VERSION=3.10
# --------------------------------------------- base3_with_python-3.11
FROM base2_with_python-3 AS base3_with_python-3.11
ENV PYTHON_VERSION=3.11
# --------------------------------------------- base3_with_python-3.12
FROM base2_with_python-3 AS base3_with_python-3.12
ENV PYTHON_VERSION=3.12
# --------------------------------------------- base3_with_python-3.13
FROM base2_with_python-3 AS base3_with_python-3.13
ENV PYTHON_VERSION=3.13
# --------------------------------------------- base3_with_python-3.14
FROM base2_with_python-3 AS base3_with_python-3.14
ENV PYTHON_VERSION=3.14
# --------------------------------------------- final
FROM base3_with_python-${PYTHON_VERSION} AS final
EXPOSE 22
RUN ssh-keygen -A
RUN adduser -D test && addgroup -S sudo && adduser test sudo
# It allows to use sudo without password
RUN echo "test ALL=(ALL:ALL) NOPASSWD:ALL" >> /etc/sudoers
# THIS CMD IS NEEDED TO CONNECT THROUGH SSH WITHOUT PASSWORD
RUN echo "test:*" | chpasswd -e
USER test
RUN curl https://raw.githubusercontent.com/pyenv/pyenv-installer/master/bin/pyenv-installer | bash
RUN ~/.pyenv/bin/pyenv install ${PYTHON_VERSION}
USER root
COPY --chown=test:test . /home/test/testgres
WORKDIR /home/test/testgres
ENV LANG=C.UTF-8
RUN chmod 700 /home/test/ && \
mkdir -p /home/test/.ssh && \
echo 'Host *' > /home/test/.ssh/config && \
echo ' ControlMaster auto' >> /home/test/.ssh/config && \
echo ' ControlPath /home/test/.ssh/master-%r@%h:%p' >> /home/test/.ssh/config && \
echo ' ControlPersist 30m' >> /home/test/.ssh/config && \
echo ' StrictHostKeyChecking no' >> /home/test/.ssh/config && \
echo ' UserKnownHostsFile /dev/null' >> /home/test/.ssh/config && \
# echo ' GSSAPIAuthentication no' >> /home/test/.ssh/config && \
chown -R test:test /home/test/.ssh && \
chmod 700 /home/test/.ssh && \
chmod 600 /home/test/.ssh/config
#
# \"$@\"
# - quote is important!
# - "DUMMY-DUMMY-DUMMY" will be ignored. Do not ask me "why?". AXEZ.
#
ENTRYPOINT ["sh", "-c", " \
set -eux; \
echo 'SYSTEM START: PREPARING SSH'; \
/usr/sbin/sshd; \
ls -la /home/test/.ssh/; \
\"$@\" \
", "DUMMY-DUMMY-DUMMY"]
# Run tests by default (master machine role)
CMD ["bash", "-c", " \
set -eux; \
echo \"HOME DIR IS [`realpath ~/`]\"; \
echo \"WORK DIR IS [$(pwd)]\"; \
if [ ! -f /home/test/.ssh/id_rsa ]; then \
su test -c \"ssh-keygen -t rsa -f /home/test/.ssh/id_rsa -q -N ''\"; \
su test -c \"cat /home/test/.ssh/id_rsa.pub >> /home/test/.ssh/authorized_keys\"; \
chmod 600 /home/test/.ssh/authorized_keys; \
fi; \
ls -la /home/test/.ssh/; \
if [ -n \"${TEST_CFG__REMOTE_SSH_KEY:-}\" ]; then \
cp \"${TEST_CFG__REMOTE_SSH_KEY}\" \"${TEST_CFG__REMOTE_SSH_KEY}_ci\"; \
export TEST_CFG__REMOTE_SSH_KEY=\"${TEST_CFG__REMOTE_SSH_KEY}_ci\"; \
chown test:test \"${TEST_CFG__REMOTE_SSH_KEY}\"; \
chmod 600 \"${TEST_CFG__REMOTE_SSH_KEY}\"; \
ls -la /home/test/.ssh/; \
fi; \
ls -la ./; \
su test -c \"TEST_FILTER='' PATH=\"/home/test/.pyenv/bin:$PATH\" bash ./run_tests2.sh\"; \
"]