1
- # Dockerfile Builder
1
+ # Makefile
2
2
# ==================
3
3
#
4
- # All the content is in `docker-bits`; this Makefile
5
- # just builds target dockerfiles by combining the dockerbits.
6
- #
7
4
# Management of build, pull/push, and testing is modified from
8
5
# https://github.com/jupyter/docker-stacks
9
6
#
@@ -16,14 +13,7 @@ DOCKER-STACKS-UPSTREAM-TAG := ed2908bbb62e
16
13
tensorflow-CUDA := 11.8.0
17
14
pytorch-CUDA := 11.8.0
18
15
19
- # https://stackoverflow.com/questions/5917413/concatenate-multiple-files-but-include-filename-as-section-headers
20
- CAT := awk '(FNR==1){print "\n\# \#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\n\#\#\# " FILENAME "\n\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\n"}1'
21
-
22
16
# Misc Directories
23
- SRC := docker-bits
24
- RESOURCES := resources
25
- OUT := output
26
- TMP := .tmp
27
17
TESTS_DIR := ./tests
28
18
MAKE_HELPERS := ./make_helpers/
29
19
PYTHON_VENV := .venv
@@ -44,141 +34,14 @@ BRANCH_NAME := $(shell ./make_helpers/get_branch_name.sh)
44
34
DEFAULT_PORT := 8888
45
35
DEFAULT_NB_PREFIX := /notebook/username/notebookname
46
36
47
- .PHONY : clean .output generate-dockerfiles
48
-
49
- clean :
50
- rm -rf $(OUT ) $(TMP )
51
-
52
- .output :
53
- mkdir -p $(OUT ) / $(TMP ) /
54
-
55
37
# ############################
56
38
# ## Generated Files ###
57
39
# ############################
58
40
get-docker-stacks-upstream-tag :
59
41
@echo $(DOCKER-STACKS-UPSTREAM-TAG )
60
42
61
43
generate-CUDA :
62
- bash scripts/get-nvidia-stuff.sh $(tensorflow-CUDA ) > $(SRC ) /1_CUDA-$(tensorflow-CUDA ) .Dockerfile
63
- bash scripts/get-nvidia-stuff.sh $(pytorch-CUDA ) > $(SRC ) /1_CUDA-$(pytorch-CUDA ) .Dockerfile
64
-
65
- generate-Spark :
66
- bash scripts/get-spark-stuff.sh --commit $(COMMIT ) > $(SRC ) /2_Spark.Dockerfile
67
-
68
- # ##################################
69
- # ##### Dockerfile Management ######
70
- # ##################################
71
-
72
- generate-dockerfiles : clean jupyterlab rstudio remote-desktop sas docker-stacks-datascience-notebook
73
- @echo " All dockerfiles created."
74
-
75
- # #############################
76
- # ## Bases GPU & Custom ###
77
- # #############################
78
-
79
- # Configure the "Bases".
80
- #
81
- # PyTorch image can use Aanaconda's CUDA packages (much simpler)
82
- pytorch : .output
83
- $(CAT ) \
84
- $(SRC ) /0_cpu.Dockerfile \
85
- $(SRC ) /2_$@ .Dockerfile \
86
- > $(TMP ) /$@ .Dockerfile
87
-
88
- # Tensorflow doesn't like the Anaconda CUDA packages (yet)
89
- tensorflow : .output
90
- $(CAT ) \
91
- $(SRC ) /0_cpu.Dockerfile \
92
- $(SRC ) /1_CUDA-$($(@ ) -CUDA) .Dockerfile \
93
- $(SRC ) /2_$@ .Dockerfile \
94
- > $(TMP ) /$@ .Dockerfile
95
-
96
- cpu : .output
97
- $(CAT ) $(SRC ) /0_$@ .Dockerfile > $(TMP ) /$@ .Dockerfile
98
-
99
- # ###############################
100
- # ## R-Studio & Jupyter ###
101
- # ###############################
102
-
103
- # Only one output version
104
- rstudio : cpu
105
- mkdir -p $(OUT ) /$@
106
- cp -r resources/common/. $(OUT ) /$@
107
-
108
- $(CAT) \
109
- $(TMP)/$<.Dockerfile \
110
- $(SRC)/3_Kubeflow.Dockerfile \
111
- $(SRC)/4_CLI.Dockerfile \
112
- $(SRC)/5_DB-Drivers.Dockerfile \
113
- $(SRC)/6_rstudio-server.Dockerfile \
114
- $(SRC)/6_$(@).Dockerfile \
115
- $(SRC)/7_remove_vulnerabilities.Dockerfile \
116
- $(SRC)/∞_CMD.Dockerfile \
117
- > $(OUT)/$@/Dockerfile
118
-
119
- # Only one output version
120
- sas :
121
- mkdir -p $(OUT ) /$@
122
- cp -r resources/common/. $(OUT ) /$@
123
- cp -r resources/sas/. $(OUT ) /$@
124
-
125
- $(CAT) \
126
- $(SRC)/0_cpu_sas.Dockerfile \
127
- $(SRC)/3_Kubeflow.Dockerfile \
128
- $(SRC)/4_CLI.Dockerfile \
129
- $(SRC)/5_DB-Drivers.Dockerfile \
130
- $(SRC)/6_jupyterlab.Dockerfile \
131
- $(SRC)/6_rstudio-server.Dockerfile \
132
- $(SRC)/6_rstudio.Dockerfile\
133
- $(SRC)/6_$(@).Dockerfile \
134
- $(SRC)/7_remove_vulnerabilities.Dockerfile \
135
- $(SRC)/∞_CMD.Dockerfile \
136
- > $(OUT)/$@/Dockerfile
137
-
138
- # create directories for current images
139
- jupyterlab : pytorch tensorflow cpu
140
-
141
- for type in $^; do \
142
- mkdir -p $(OUT)/$@-$${type}; \
143
- cp -r resources/common/. $(OUT)/$@-$${type}/; \
144
- $(CAT) \
145
- $(TMP)/$${type}.Dockerfile \
146
- $(SRC)/3_Kubeflow.Dockerfile \
147
- $(SRC)/4_CLI.Dockerfile \
148
- $(SRC)/5_DB-Drivers.Dockerfile \
149
- $(SRC)/6_$(@).Dockerfile \
150
- $(SRC)/7_remove_vulnerabilities.Dockerfile \
151
- $(SRC)/8_platform.Dockerfile \
152
- $(SRC)/∞_CMD.Dockerfile \
153
- > $(OUT)/$@-$${type}/Dockerfile; \
154
- done
155
-
156
- # Remote Desktop
157
- remote-desktop :
158
- mkdir -p $(OUT ) /$@
159
- echo " REMOTE DESKTOP"
160
- cp -r scripts/remote-desktop $(OUT ) /$@
161
- cp -r resources/common/. $(OUT ) /$@
162
- cp -r resources/remote-desktop/. $(OUT ) /$@
163
-
164
- $(CAT) \
165
- $(SRC)/0_Rocker.Dockerfile \
166
- $(SRC)/3_Kubeflow.Dockerfile \
167
- $(SRC)/4_CLI.Dockerfile \
168
- $(SRC)/6_remote-desktop.Dockerfile \
169
- $(SRC)/7_remove_vulnerabilities.Dockerfile \
170
- $(SRC)/8_platform.Dockerfile \
171
- $(SRC)/∞_CMD_remote-desktop.Dockerfile \
172
- > $(OUT)/$@/Dockerfile
173
-
174
- # Debugging Dockerfile generator that essentially uses docker-stacks images
175
- # Used for when you need something to build quickly during debugging
176
- docker-stacks-datascience-notebook :
177
- mkdir -p $(OUT ) /$@
178
- cp -r resources/common/* $(OUT ) /$@
179
- DS_TAG=$$(make -s get-docker-stacks-upstream-tag ) ; \
180
- echo " FROM jupyter/datascience-notebook:$$ DS_TAG" > $(OUT ) /$@ /Dockerfile; \
181
- $(CAT ) $(SRC ) /∞_CMD.Dockerfile >> $(OUT ) /$@ /Dockerfile
44
+ bash make_helpers/get-nvidia-stuff.sh $(tensorflow-CUDA ) > 1_CUDA-$(tensorflow-CUDA ) .Dockerfile
182
45
183
46
# ##################################
184
47
# ##### Docker helpers ######
0 commit comments