Skip to content

Commit 9ca4d09

Browse files
committed
Docker: The new installation process
1 parent 027b9cc commit 9ca4d09

File tree

3 files changed

+71
-59
lines changed

3 files changed

+71
-59
lines changed

Dockerfile

Lines changed: 60 additions & 48 deletions
Original file line numberDiff line numberDiff line change
@@ -1,60 +1,72 @@
11
# syntax=docker/dockerfile:1
22
FROM ubuntu:24.04
33

4-
RUN apt-get update && DEBIAN_FRONTEND=noninteractive apt-get install -y \
5-
build-essential \
6-
cgroup-lite \
7-
cppreference-doc-en-html \
8-
fp-compiler \
9-
git \
10-
ghc \
11-
libcap-dev \
12-
libcups2-dev \
13-
libffi-dev \
14-
libpq-dev \
15-
libyaml-dev \
16-
mono-mcs \
17-
openjdk-8-jdk-headless \
18-
php-cli \
19-
postgresql-client \
20-
pypy3 \
21-
python3-pip \
22-
python3.12 \
23-
python3.12-dev \
24-
rustc \
25-
shared-mime-info \
26-
sudo \
27-
wait-for-it \
28-
zip
29-
30-
# Create cmsuser user with sudo privileges
31-
RUN useradd -ms /bin/bash cmsuser && \
32-
usermod -aG sudo cmsuser
33-
# Disable sudo password
34-
RUN echo '%sudo ALL=(ALL) NOPASSWD:ALL' >> /etc/sudoers
35-
# Set cmsuser as default user
36-
USER cmsuser
4+
RUN \
5+
export DEBIAN_FRONTEND=noninteractive ; \
6+
apt update && \
7+
apt upgrade -y && \
8+
apt install -y \
9+
build-essential \
10+
cgroup-lite \
11+
cppreference-doc-en-html \
12+
curl \
13+
fp-compiler \
14+
git \
15+
ghc \
16+
libcap-dev \
17+
libcups2-dev \
18+
libffi-dev \
19+
libpq-dev \
20+
libyaml-dev \
21+
mono-mcs \
22+
openjdk-8-jdk-headless \
23+
php-cli \
24+
postgresql-client \
25+
pypy3 \
26+
python3-pip \
27+
python3-venv \
28+
python3.12 \
29+
python3.12-dev \
30+
rustc \
31+
shared-mime-info \
32+
sudo \
33+
wait-for-it \
34+
zip
35+
36+
RUN \
37+
export DEBIAN_FRONTEND=noninteractive ; \
38+
echo "deb [arch=amd64 signed-by=/etc/apt/keyrings/isolate.asc] http://www.ucw.cz/isolate/debian/ bookworm-isolate main" >/etc/apt/sources.list.d/isolate.list && \
39+
curl https://www.ucw.cz/isolate/debian/signing-key.asc >/etc/apt/keyrings/isolate.asc && \
40+
apt update && \
41+
apt install -y isolate && \
42+
sed -i 's@^cg_root .*@cg_root = /sys/fs/cgroup@' /etc/isolate
3743

38-
RUN mkdir /home/cmsuser/cms
39-
COPY --chown=cmsuser:cmsuser requirements.txt dev-requirements.txt /home/cmsuser/cms/
44+
# Create cmsuser user with sudo privileges and access to isolate
45+
RUN \
46+
useradd -ms /bin/bash cmsuser && \
47+
usermod -aG sudo cmsuser && \
48+
usermod -aG isolate cmsuser && \
49+
# Disable sudo password \
50+
echo '%sudo ALL=(ALL) NOPASSWD:ALL' >> /etc/sudoers
4051

41-
WORKDIR /home/cmsuser/cms
52+
# Set cmsuser as default user
53+
USER cmsuser
54+
ENV LANG=C.UTF-8
4255

43-
RUN sudo pip3 install --break-system-packages -r requirements.txt
44-
RUN sudo pip3 install --break-system-packages -r dev-requirements.txt
56+
RUN mkdir /home/cmsuser/src
57+
COPY --chown=cmsuser:cmsuser install.py constraints.txt /home/cmsuser/src/
4558

46-
COPY --chown=cmsuser:cmsuser . /home/cmsuser/cms
59+
WORKDIR /home/cmsuser/src
4760

48-
RUN sudo pip3 install --break-system-packages .
61+
RUN ./install.py venv
62+
ENV PATH="/home/cmsuser/cms/bin:$PATH"
4963

50-
RUN sudo python3 prerequisites.py --yes --cmsuser=cmsuser install
64+
COPY --chown=cmsuser:cmsuser . /home/cmsuser/src
5165

52-
RUN sed 's|/cmsuser:your_password_here@localhost:5432/cmsdb"|/postgres@testdb:5432/cmsdbfortesting"|' ./config/cms.sample.toml \
53-
| sudo tee /usr/local/etc/cms-testdb.toml
54-
RUN sed -e 's|/cmsuser:your_password_here@localhost:5432/cmsdb"|/postgres@devdb:5432/cmsdb"|' -e 's/127.0.0.1/0.0.0.0/' ./config/cms.sample.toml \
55-
| sudo tee /usr/local/etc/cms-devdb.toml
56-
RUN sed 's/127.0.0.1/0.0.0.0/' ./config/cms_ranking.sample.toml | sudo tee /usr/local/etc/cms_ranking.toml
66+
RUN ./install.py cms --devel
5767

58-
ENV LANG C.UTF-8
68+
RUN sed 's|/cmsuser:your_password_here@localhost:5432/cmsdb"|/postgres@testdb:5432/cmsdbfortesting"|' ./config/cms.sample.toml >../cms/etc/cms-testdb.toml
69+
RUN sed -e 's|/cmsuser:your_password_here@localhost:5432/cmsdb"|/postgres@devdb:5432/cmsdb"|' -e 's/127.0.0.1/0.0.0.0/' ./config/cms.sample.toml >../cms/etc/cms-devdb.toml
70+
RUN sed -i 's/127.0.0.1/0.0.0.0/' ../cms/etc/cms_ranking.toml
5971

60-
CMD [""]
72+
CMD ["/bin/bash"]

docker-compose.dev.yml

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4,17 +4,17 @@ services:
44
environment:
55
POSTGRES_HOST_AUTH_METHOD: trust
66
volumes:
7-
- "./.dev/postgres-data:/var/lib/postgresql/data"
7+
- "../.dev/postgres-data:/var/lib/postgresql/data"
88

99
devcms:
10-
build: .
10+
build: ..
1111
depends_on:
1212
- "devdb"
1313
environment:
14-
CMS_CONFIG: /usr/local/etc/cms-devdb.toml
14+
CMS_CONFIG: /home/cmsuser/cms/etc/cms-devdb.toml
1515
volumes:
1616
- "./.dev/home:/home/cmsuser"
17-
- ".:/home/cmsuser/cms"
17+
- "..:/home/cmsuser/src"
1818
privileged: true
1919
cgroup: host
2020
command: >

docker-compose.test.yml

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -5,27 +5,27 @@ services:
55
POSTGRES_HOST_AUTH_METHOD: trust
66

77
testcms:
8-
build: .
8+
build: ..
99
depends_on:
1010
- "testdb"
1111
environment:
12-
CMS_CONFIG: /usr/local/etc/cms-testdb.toml
12+
CMS_CONFIG: /home/cmsuser/cms/etc/cms-testdb.toml
1313
# Could be removed in the future, see:
1414
# - https://github.com/pytest-dev/pytest/issues/7443
1515
# - https://github.com/actions/runner/issues/241
1616
PYTEST_ADDOPTS: --color=yes
1717
volumes:
18-
- "./codecov:/home/cmsuser/cms/codecov"
18+
- "./codecov:/home/cmsuser/src/codecov"
1919
privileged: true
2020
cgroup: host
21-
command: wait-for-it testdb:5432 -- ./_cms-test-internal.sh
21+
command: wait-for-it testdb:5432 -- docker/_cms-test-internal.sh
2222

2323
stresstestcms:
24-
build: .
24+
build: ..
2525
depends_on:
2626
- "testdb"
2727
environment:
28-
CMS_CONFIG: /usr/local/etc/cms-testdb.toml
28+
CMS_CONFIG: /home/cmsuser/cms/etc/cms-testdb.toml
2929
privileged: true
3030
cgroup: host
31-
command: wait-for-it testdb:5432 -- ./_cms-stresstest-internal.sh
31+
command: wait-for-it testdb:5432 -- docker/_cms-stresstest-internal.sh

0 commit comments

Comments
 (0)