@@ -9,7 +9,28 @@ status](https://codecov.io/gh/ThinkR-open/dockerfiler/branch/master/graph/badge.
9
9
10
10
# ` {dockerfiler} `
11
11
12
- Easy Dockerfile Creation from R.
12
+ The goal of ` {dockerfiler} ` is to provide an easy way to create
13
+ Dockerfiles from R.
14
+
15
+ ## About
16
+
17
+ You’re reading the doc about version :
18
+
19
+ ``` r
20
+ desc :: desc_get_version()
21
+ # > [1] '0.2.1'
22
+ ```
23
+
24
+ The check results are:
25
+
26
+ ``` r
27
+ devtools :: check(quiet = TRUE )
28
+ # > ℹ Loading dockerfiler
29
+ # > ── R CMD check results ────────────────────────────────── dockerfiler 0.2.1 ────
30
+ # > Duration: 48.4s
31
+ # >
32
+ # > 0 errors ✔ | 0 warnings ✔ | 0 notes ✔
33
+ ```
13
34
14
35
## Installation
15
36
@@ -61,15 +82,6 @@ See your Dockerfile :
61
82
62
83
``` r
63
84
my_dock
64
- # > FROM rocker/r-base
65
- # > MAINTAINER Colin FAY <contact@colinfay.me>
66
- # > RUN R -e 'install.packages("attempt", repo = "http://cran.irsn.fr/")'
67
- # > RUN mkdir /usr/scripts
68
- # > RUN cd /usr/scripts
69
- # > COPY plumberfile.R /usr/scripts/plumber.R
70
- # > COPY torun.R /usr/scripts/torun.R
71
- # > EXPOSE 8000
72
- # > CMD Rscript /usr/scripts/torun.R
73
85
```
74
86
75
87
If you’ve made a mistake in your script, you can switch lines with the
@@ -80,49 +92,27 @@ the two cmd you want to switch :
80
92
# Switch line 8 and 7
81
93
my_dock $ switch_cmd(8 , 7 )
82
94
my_dock
83
- # > FROM rocker/r-base
84
- # > MAINTAINER Colin FAY <contact@colinfay.me>
85
- # > RUN R -e 'install.packages("attempt", repo = "http://cran.irsn.fr/")'
86
- # > RUN mkdir /usr/scripts
87
- # > RUN cd /usr/scripts
88
- # > COPY plumberfile.R /usr/scripts/plumber.R
89
- # > EXPOSE 8000
90
- # > COPY torun.R /usr/scripts/torun.R
91
- # > CMD Rscript /usr/scripts/torun.R
92
95
```
93
96
94
97
You can also remove a cmd with ` remove_cmd ` :
95
98
96
99
``` r
97
100
my_dock $ remove_cmd(8 )
98
101
my_dock
99
- # > FROM rocker/r-base
100
- # > MAINTAINER Colin FAY <contact@colinfay.me>
101
- # > RUN R -e 'install.packages("attempt", repo = "http://cran.irsn.fr/")'
102
- # > RUN mkdir /usr/scripts
103
- # > RUN cd /usr/scripts
104
- # > COPY plumberfile.R /usr/scripts/plumber.R
105
- # > EXPOSE 8000
106
- # > CMD Rscript /usr/scripts/torun.R
107
102
```
108
103
109
104
This also works with a vector:
110
105
111
106
``` r
112
107
my_dock $ remove_cmd(5 : 7 )
113
108
my_dock
114
- # > FROM rocker/r-base
115
- # > MAINTAINER Colin FAY <contact@colinfay.me>
116
- # > RUN R -e 'install.packages("attempt", repo = "http://cran.irsn.fr/")'
117
- # > RUN mkdir /usr/scripts
118
- # > CMD Rscript /usr/scripts/torun.R
119
109
```
120
110
121
111
` add_after ` add a command after a given line.
122
112
123
113
``` r
124
114
my_dock $ add_after(
125
- cmd = " RUN R -e 'remotes::install_cran(\" rlang\" )'" ,
115
+ cmd = " RUN R -e 'remotes::install_cran(\" rlang\" )'" ,
126
116
after = 3
127
117
)
128
118
```
@@ -140,72 +130,20 @@ dependencies and the package.
140
130
141
131
``` r
142
132
my_dock <- dock_from_desc(" DESCRIPTION" )
143
- # > ℹ Please wait while we compute system requirements...
144
- # > ✓ Done
145
133
my_dock
146
- # > FROM rocker/r-ver:4.1.2
147
- # > RUN apt-get update && apt-get install -y git-core libcurl4-openssl-dev libgit2-dev libicu-dev libssl-dev make pandoc pandoc-citeproc && rm -rf /var/lib/apt/lists/*
148
- # > RUN echo "options(repos = c(CRAN = 'https://cran.rstudio.com/'), download.file.method = 'libcurl', Ncpus = 4)" >> /usr/local/lib/R/etc/Rprofile.site
149
- # > RUN R -e 'install.packages("remotes")'
150
- # > RUN Rscript -e 'remotes::install_version("glue",upgrade="never", version = "1.6.1")'
151
- # > RUN Rscript -e 'remotes::install_version("cli",upgrade="never", version = "3.1.1")'
152
- # > RUN Rscript -e 'remotes::install_version("R6",upgrade="never", version = "2.5.1")'
153
- # > RUN Rscript -e 'remotes::install_version("desc",upgrade="never", version = "1.4.0")'
154
- # > RUN Rscript -e 'remotes::install_version("fs",upgrade="never", version = "1.5.2")'
155
- # > RUN Rscript -e 'remotes::install_version("jsonlite",upgrade="never", version = "1.7.3")'
156
- # > RUN Rscript -e 'remotes::install_version("knitr",upgrade="never", version = "1.37")'
157
- # > RUN Rscript -e 'remotes::install_version("testthat",upgrade="never", version = "3.1.2")'
158
- # > RUN Rscript -e 'remotes::install_version("rmarkdown",upgrade="never", version = "2.11")'
159
- # > RUN Rscript -e 'remotes::install_version("usethis",upgrade="never", version = "2.1.5")'
160
- # > RUN Rscript -e 'remotes::install_version("renv",upgrade="never", version = "0.15.2")'
161
- # > RUN Rscript -e 'remotes::install_version("remotes",upgrade="never", version = "2.4.2")'
162
- # > RUN Rscript -e 'remotes::install_version("pkgbuild",upgrade="never", version = "1.3.1")'
163
- # > RUN Rscript -e 'remotes::install_version("pak",upgrade="never", version = "0.2.0")'
164
- # > RUN Rscript -e 'remotes::install_version("attempt",upgrade="never", version = "0.3.1")'
165
- # > RUN mkdir /build_zone
166
- # > ADD . /build_zone
167
- # > WORKDIR /build_zone
168
- # > RUN R -e 'remotes::install_local(upgrade="never")'
169
- # > RUN rm -rf /build_zone
170
134
171
135
my_dock $ CMD(r(library(dockerfiler )))
172
136
173
137
my_dock $ add_after(
174
- cmd = " RUN R -e 'remotes::install_cran(\" rlang\" )'" ,
138
+ cmd = " RUN R -e 'remotes::install_cran(\" rlang\" )'" ,
175
139
after = 3
176
140
)
177
141
my_dock
178
- # > FROM rocker/r-ver:4.1.2
179
- # > RUN apt-get update && apt-get install -y git-core libcurl4-openssl-dev libgit2-dev libicu-dev libssl-dev make pandoc pandoc-citeproc && rm -rf /var/lib/apt/lists/*
180
- # > RUN echo "options(repos = c(CRAN = 'https://cran.rstudio.com/'), download.file.method = 'libcurl', Ncpus = 4)" >> /usr/local/lib/R/etc/Rprofile.site
181
- # > RUN R -e 'remotes::install_cran("rlang")'
182
- # > RUN R -e 'install.packages("remotes")'
183
- # > RUN Rscript -e 'remotes::install_version("glue",upgrade="never", version = "1.6.1")'
184
- # > RUN Rscript -e 'remotes::install_version("cli",upgrade="never", version = "3.1.1")'
185
- # > RUN Rscript -e 'remotes::install_version("R6",upgrade="never", version = "2.5.1")'
186
- # > RUN Rscript -e 'remotes::install_version("desc",upgrade="never", version = "1.4.0")'
187
- # > RUN Rscript -e 'remotes::install_version("fs",upgrade="never", version = "1.5.2")'
188
- # > RUN Rscript -e 'remotes::install_version("jsonlite",upgrade="never", version = "1.7.3")'
189
- # > RUN Rscript -e 'remotes::install_version("knitr",upgrade="never", version = "1.37")'
190
- # > RUN Rscript -e 'remotes::install_version("testthat",upgrade="never", version = "3.1.2")'
191
- # > RUN Rscript -e 'remotes::install_version("rmarkdown",upgrade="never", version = "2.11")'
192
- # > RUN Rscript -e 'remotes::install_version("usethis",upgrade="never", version = "2.1.5")'
193
- # > RUN Rscript -e 'remotes::install_version("renv",upgrade="never", version = "0.15.2")'
194
- # > RUN Rscript -e 'remotes::install_version("remotes",upgrade="never", version = "2.4.2")'
195
- # > RUN Rscript -e 'remotes::install_version("pkgbuild",upgrade="never", version = "1.3.1")'
196
- # > RUN Rscript -e 'remotes::install_version("pak",upgrade="never", version = "0.2.0")'
197
- # > RUN Rscript -e 'remotes::install_version("attempt",upgrade="never", version = "0.3.1")'
198
- # > RUN mkdir /build_zone
199
- # > ADD . /build_zone
200
- # > WORKDIR /build_zone
201
- # > RUN R -e 'remotes::install_local(upgrade="never")'
202
- # > RUN rm -rf /build_zone
203
- # > CMD R -e 'library(dockerfiler)'
204
142
```
205
143
206
144
## Create a Dockerfile from renv.lock
207
145
208
- - Create renv.lock
146
+ - Create renv.lock
209
147
210
148
``` r
211
149
dir_build <- tempfile(pattern = " renv" )
@@ -216,37 +154,31 @@ the_lockfile <- file.path(dir_build, "renv.lock")
216
154
custom_packages <- c(
217
155
# attachment::att_from_description(),
218
156
" renv" ,
219
- " cli" , " glue" , " golem" ,
220
- " shiny" , " stats" , " utils" ,
157
+ " cli" ,
158
+ " glue" ,
159
+ " golem" ,
160
+ " shiny" ,
161
+ " stats" ,
162
+ " utils" ,
221
163
" testthat" ,
222
164
" knitr"
223
165
)
224
166
renv :: snapshot(
225
167
packages = custom_packages ,
226
168
lockfile = the_lockfile ,
227
- prompt = FALSE )
169
+ prompt = FALSE
170
+ )
228
171
```
229
172
230
- - Build Dockerfile
173
+ - Build Dockerfile
231
174
232
175
``` r
233
- my_dock <- dock_from_renv(lockfile = the_lockfile ,
234
- distro = " focal" ,
235
- FROM = " rocker/verse"
236
- )
237
- # > ℹ Please wait while we compute system requirements...
238
- # > Fetching system dependencies for 81 package records.
239
- # > Warning: `lang()` is deprecated as of rlang 0.2.0.
240
- # > Please use `call2()` instead.
241
- # > This warning is displayed once per session.
242
- # > ✓ Done
176
+ my_dock <- dock_from_renv(
177
+ lockfile = the_lockfile ,
178
+ distro = " focal" ,
179
+ FROM = " rocker/verse"
180
+ )
243
181
my_dock
244
- # > FROM rocker/verse:4.1
245
- # > RUN apt-get update -y && apt-get install -y make libcurl4-openssl-dev libssl-dev git libgit2-dev libicu-dev libxml2-dev zlib1g-dev pandoc && rm -rf /var/lib/apt/lists/*
246
- # > RUN echo "options(renv.config.pak.enabled = TRUE, repos = c(CRAN = 'https://cran.rstudio.com/'), download.file.method = 'libcurl', Ncpus = 4)" >> /usr/local/lib/R/etc/Rprofile.site
247
- # > RUN R -e 'install.packages(c("renv","remotes"))'
248
- # > COPY renv.lock renv.lock
249
- # > RUN R -e 'renv::restore()'
250
182
```
251
183
252
184
## Contact
0 commit comments