Skip to content

Commit 4eb9d9d

Browse files
[docker]: Change templating method to jinja2 (sonic-net#115)
Move from sed to jinja2 for more readability.
1 parent a11593a commit 4eb9d9d

File tree

10 files changed

+62
-33
lines changed

10 files changed

+62
-33
lines changed

dockers/docker-database/Dockerfile.template renamed to dockers/docker-database/Dockerfile.j2

+6-3
Original file line numberDiff line numberDiff line change
@@ -2,17 +2,20 @@ FROM docker-base
22

33
RUN apt-get update
44

5-
COPY deps/ deps
5+
COPY debs/ debs
66

77
## Install redis-tools dependencies
88
## TODO: implicitly install dependencies
99
RUN apt-get -y install libjemalloc1
1010

11-
SED_DPKG
11+
RUN dpkg -i \
12+
{% for deb in docker_database_debs.split(' ') -%}
13+
debs/{{ deb }}{{' '}}
14+
{%- endfor %}
1215

1316
## Clean up
1417
RUN apt-get clean -y; apt-get autoclean -y; apt-get autoremove -y
15-
RUN rm -rf /deps
18+
RUN rm -rf /debs
1619

1720
RUN sed -ri 's/^daemonize yes$/daemonize no/; \
1821
s/^logfile .*$/logfile ""/; \

dockers/docker-fpm/Dockerfile.template renamed to dockers/docker-fpm/Dockerfile.j2

+6-3
Original file line numberDiff line numberDiff line change
@@ -4,13 +4,16 @@ RUN apt-get update
44

55
RUN apt-get install -y libdbus-1-3 libdaemon0 libjansson4
66

7-
COPY deps/ deps
7+
COPY debs/ debs
88

9-
SED_DPKG
9+
RUN dpkg -i \
10+
{% for deb in docker_fpm_debs.split(' ') -%}
11+
debs/{{ deb }}{{' '}}
12+
{%- endfor %}
1013

1114
## Clean up
1215
RUN apt-get clean -y; apt-get autoclean -y; apt-get autoremove -y
13-
RUN rm -rf /deps
16+
RUN rm -rf /debs
1417

1518
COPY ["start.sh", "/usr/bin/"]
1619

dockers/docker-lldp-sv2/Dockerfile.template renamed to dockers/docker-lldp-sv2/Dockerfile.j2

+6-3
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
FROM docker-base
22

3-
COPY deps /deps
3+
COPY debs /debs
44
COPY python-wheels /python-wheels
55

66
RUN apt-get update && apt-get install -y python-pip supervisor libbsd0 libevent-2.0-5 libjansson4 libwrap0 libxml2 libpci3 libperl5.20
@@ -9,13 +9,16 @@ RUN apt-get update && apt-get install -y python-pip supervisor libbsd0 libevent-
99
## Install Python SSWSDK
1010
## Install LLDP Sync Daemon
1111

12-
SED_DPKG
12+
RUN dpkg -i \
13+
{% for deb in docker_lldp_sv2_debs.split(' ') -%}
14+
debs/{{ deb }}{{' '}}
15+
{%- endfor %}
1316

1417
RUN pip install /python-wheels/sswsdk-2.0.1-py2-none-any.whl && \
1518
pip install /python-wheels/sonic_d-2.0.0-py2-none-any.whl && \
1619
apt-get remove -y python-pip && \
1720
apt-get purge -y && apt-get autoclean -y && apt-get autoremove -y && \
18-
rm -rf /deps /python-wheels ~/.cache
21+
rm -rf /debs /python-wheels ~/.cache
1922

2023
COPY supervisord.conf /etc/supervisor/conf.d/supervisord.conf
2124
COPY reconfigure.sh /opt/reconfigure.sh

dockers/docker-orchagent/Dockerfile.template renamed to dockers/docker-orchagent/Dockerfile.j2

+6-3
Original file line numberDiff line numberDiff line change
@@ -8,15 +8,18 @@ RUN apt-get install -f -y ifupdown bridge-utils libdbus-1-3 libdaemon0 libjansso
88
## TODO: implicitly install dependencies
99
RUN apt-get -y install libjemalloc1
1010

11-
COPY deps /deps
11+
COPY debs /debs
1212

13-
SED_DPKG
13+
RUN dpkg -i \
14+
{% for deb in docker_orchagent_debs.split(' ') -%}
15+
debs/{{ deb }}{{' '}}
16+
{%- endfor %}
1417

1518
COPY start.sh /usr/bin/start.sh
1619

1720
## Clean up
1821
RUN apt-get clean -y; apt-get autoclean -y; apt-get autoremove -y
19-
RUN rm -rf /deps
22+
RUN rm -rf /debs
2023

2124
ENTRYPOINT ["/bin/bash"]
2225
CMD ["/usr/bin/start.sh"]

dockers/docker-snmp-sv2/Dockerfile.template renamed to dockers/docker-snmp-sv2/Dockerfile.j2

+6-3
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
FROM docker-base
22

3-
COPY deps /deps
3+
COPY debs /debs
44
COPY python-wheels /python-wheels
55

66
# enable -O for all Python calls
@@ -12,9 +12,12 @@ ENV PYTHONOPTIMIZE 1
1212
## Clean up
1313
RUN apt-get update && apt-get install -y libmysqlclient-dev libmysqld-dev libperl-dev libpci-dev libpci3 libsensors4 libsensors4-dev libwrap0-dev
1414

15-
SED_DPKG
15+
RUN dpkg -i \
16+
{% for deb in docker_snmp_sv2_debs.split(' ') -%}
17+
debs/{{ deb }}{{' '}}
18+
{%- endfor %}
1619

17-
RUN rm -rf /deps
20+
RUN rm -rf /debs
1821

1922
# install subagent
2023
RUN apt-get -y install build-essential wget libssl-dev openssl supervisor && \

dockers/docker-team/Dockerfile.template renamed to dockers/docker-team/Dockerfile.j2

+6-3
Original file line numberDiff line numberDiff line change
@@ -2,14 +2,17 @@ FROM docker-base
22

33
RUN apt-get update && apt-get install -f -y libdbus-1-3 libdaemon0 libjansson4
44

5-
COPY deps /deps
5+
COPY debs /debs
66

7-
SED_DPKG
7+
RUN dpkg -i \
8+
{% for deb in docker_team_debs.split(' ') -%}
9+
debs/{{ deb }}{{' '}}
10+
{%- endfor %}
811

912
COPY start.sh /usr/bin/start.sh
1013

1114
RUN apt-get clean -y; apt-get autoclean -y; apt-get autoremove -y
12-
RUN rm -rf /deps
15+
RUN rm -rf /debs
1316

1417
ENTRYPOINT ["/bin/bash"]
1518
CMD ["/usr/bin/start.sh"]

platform/broadcom/docker-syncd-brcm/Dockerfile.template renamed to platform/broadcom/docker-syncd-brcm/Dockerfile.j2

+7-4
Original file line numberDiff line numberDiff line change
@@ -2,18 +2,21 @@ FROM docker-base
22

33
RUN apt-get update
44

5-
COPY deps /deps
5+
COPY debs /debs
66

7-
SED_DPKG
7+
RUN dpkg -i \
8+
{% for deb in docker_syncd_brcm_debs.split(' ') -%}
9+
debs/{{ deb }}{{' '}}
10+
{%- endfor %}
811

912
## TODO: add kmod into Depends
1013
RUN apt-get install -f kmod
1114

12-
COPY ["deps/dsserve", "deps/bcmcmd", "start.sh", "/usr/bin/"]
15+
COPY ["debs/dsserve", "debs/bcmcmd", "start.sh", "/usr/bin/"]
1316

1417
## Clean up
1518
RUN apt-get clean -y; apt-get autoclean -y; apt-get autoremove -y
16-
RUN rm -rf /deps
19+
RUN rm -rf /debs
1720

1821
ENTRYPOINT ["/bin/bash"]
1922
CMD ["/usr/bin/start.sh"]

platform/mellanox/docker-syncd-mlnx/Dockerfile.template renamed to platform/mellanox/docker-syncd-mlnx/Dockerfile.j2

+7-4
Original file line numberDiff line numberDiff line change
@@ -2,19 +2,22 @@ FROM docker-base
22

33
RUN apt-get update
44

5-
COPY deps /deps
5+
COPY debs /debs
66

77
RUN apt-get install -y libxml2
88

9-
SED_DPKG
9+
RUN dpkg -i \
10+
{% for deb in docker_syncd_mlnx_debs.split(' ') -%}
11+
debs/{{ deb }}{{' '}}
12+
{%- endfor %}
1013

1114
COPY ["start.sh", "/usr/bin/"]
1215
COPY ["mlnx-fw-upgrade.sh", "/usr/bin/"]
13-
COPY ["/deps/fw-SPC.mfa", "/etc/mlnx/"]
16+
COPY ["/debs/fw-SPC.mfa", "/etc/mlnx/"]
1417

1518
## Clean up
1619
RUN apt-get clean -y; apt-get autoclean -y; apt-get autoremove -y
17-
RUN rm -rf /deps
20+
RUN rm -rf /debs
1821

1922
ENTRYPOINT ["/bin/bash"]
2023
CMD ["/usr/bin/start.sh"]

platform/p4/docker-sonic-p4/Dockerfile.template renamed to platform/p4/docker-sonic-p4/Dockerfile.j2

+6-3
Original file line numberDiff line numberDiff line change
@@ -4,9 +4,12 @@ RUN apt-get update
44

55
RUN apt-get install -y net-tools ethtool tcpdump ifupdown bridge-utils python-ply libqt5core5a libqt5network5 libboost-program-options1.55.0 libboost-system1.55.0 libboost-thread1.55.0 libgmp10 libjudydebian1 libnanomsg0 libdaemon0 libjansson4 libjemalloc1
66

7-
COPY deps /deps
7+
COPY debs /debs
88

9-
SED_DPKG
9+
RUN dpkg -i \
10+
{% for deb in docker_sonic_p4_debs.split(' ') -%}
11+
debs/{{ deb }}{{' '}}
12+
{%- endfor %}
1013

1114
ADD port_config.ini /port_config.ini
1215
ADD startup.sh /scripts/startup.sh
@@ -15,7 +18,7 @@ ADD rsyslog.conf /etc/rsyslog.conf
1518

1619
## Clean up
1720
RUN apt-get clean -y; apt-get autoclean -y; apt-get autoremove -y
18-
RUN rm -rf /deps
21+
RUN rm -rf /debs
1922

2023
RUN sed -ri 's/^daemonize yes$/daemonize no/; \
2124
s/^logfile .*$/logfile ""/; \

slave.mk

+6-4
Original file line numberDiff line numberDiff line change
@@ -249,13 +249,15 @@ $(addprefix $(TARGET_PATH)/, $(SONIC_SIMPLE_DOCKER_IMAGES)) : $(TARGET_PATH)/%.g
249249
$(FOOTER)
250250

251251
# Targets for building docker images
252-
$(addprefix $(TARGET_PATH)/, $(SONIC_DOCKER_IMAGES)) : $(TARGET_PATH)/%.gz : .platform docker-start $$(addprefix $(DEBS_PATH)/,$$($$*.gz_DEPENDS) $$($$*.gz_FILES)) $$(addprefix $(PYTHON_WHEELS_PATH)/,$$($$*.gz_PYTHON_WHEELS)) $$(addsuffix -load,$$(addprefix $(TARGET_PATH)/,$$($$*.gz_LOAD_DOCKERS)))
252+
$(addprefix $(TARGET_PATH)/, $(SONIC_DOCKER_IMAGES)) : $(TARGET_PATH)/%.gz : .platform docker-start $$(addprefix $(DEBS_PATH)/,$$($$*.gz_DEPENDS) $$($$*.gz_FILES)) $$(addprefix $(PYTHON_WHEELS_PATH)/,$$($$*.gz_PYTHON_WHEELS)) $$(addsuffix -load,$$(addprefix $(TARGET_PATH)/,$$($$*.gz_LOAD_DOCKERS))) $$($$*.gz_PATH)/Dockerfile.j2
253253
$(HEADER)
254-
mkdir -p $($*.gz_PATH)/deps $(LOG)
254+
mkdir -p $($*.gz_PATH)/debs $(LOG)
255255
mkdir -p $($*.gz_PATH)/python-wheels $(LOG)
256-
sudo mount --bind $(DEBS_PATH) $($*.gz_PATH)/deps $(LOG)
256+
sudo mount --bind $(DEBS_PATH) $($*.gz_PATH)/debs $(LOG)
257257
sudo mount --bind $(PYTHON_WHEELS_PATH) $($*.gz_PATH)/python-wheels $(LOG)
258-
sed 's/SED_DPKG/RUN cd deps \&\& dpkg -i $(shell printf "$(subst $(SPACE),\n,$(call expand,$($*.gz_DEPENDS),RDEPENDS))\n" | awk '!a[$$0]++')/g' $($*.gz_PATH)/Dockerfile.template > $($*.gz_PATH)/Dockerfile
258+
# Export variables for j2. Use path for unique variable names, e.g. docker_orchagent_debs
259+
$(eval export $(subst -,_,$(notdir $($*.gz_PATH)))_debs=$(shell printf "$(subst $(SPACE),\n,$(call expand,$($*.gz_DEPENDS),RDEPENDS))\n" | awk '!a[$$0]++'))
260+
j2 $($*.gz_PATH)/Dockerfile.j2 > $($*.gz_PATH)/Dockerfile
259261
docker build --no-cache -t $* $($*.gz_PATH) $(LOG)
260262
docker save $* | gzip -c > $@
261263
$(FOOTER)

0 commit comments

Comments
 (0)