aboutsummaryrefslogtreecommitdiff
Error: user-error ("Unable to resolve link: \"introduction\"") mapbacktrace(#f(compiled-function (evald func args flags) #)) debug-early-backtrace() debug-early(error (user-error "Unable to resolve link: \"introduction\"")) signal(user-error ("Unable to resolve link: \"introduction\"")) user-error("Unable to resolve link: %S" "introduction") org-export-data((link (:type "custom-id" :path "introduction" :format bracket :raw-link "#introduction" :application nil :search-option nil :begin 115 :end 146 :contents-begin 132 :contents-end 144 :post-blank 0 :parent (paragraph (:begin 115 :end 147 :contents-begin 115 :contents-end 147 :post-blank 0 :post-affiliated 115 :mode nil :granularity nil :parent (item (:bullet "- " :begin 113 :end 147 :contents-begin 115 :contents-end 147 :checkbox nil :counter nil :structure ((113 0 "- " nil nil nil 147) (147 0 "- " nil nil nil 209) (209 0 "- " nil nil nil 259)) :pre-blank 0 :post-blank 0 :post-affiliated 113 :tag nil :mode item :granularity nil :parent (plain-list (:type unordered :begin 113 :end 259 :contents-begin 113 :contents-end 259 :structure ((113 0 "- " nil nil nil 147) (147 0 "- " nil nil nil 209) (209 0 "- " nil nil nil 259)) :post-blank 0 :post-affiliated 113 :mode planning :granularity nil :parent (section (:begin 113 :end 260 :contents-begin 113 :contents-end 259 :robust-begin 113 :robust-end 257 :post-blank 1 :post-affiliated 113 :mode section :granularity nil :parent (headline (:raw-value "Table of Contents" :begin 35 :end 260 :pre-blank 0 :contents-begin 113 :contents-end 259 :robust-begin 115 :robust-end 257 :level 1 :priority nil :tags ("TOC") :todo-keyword nil :todo-type nil :post-blank 1 :footnote-section-p nil :archivedp nil :commentedp nil :post-affiliated 35 :title (#("Table of Contents" 0 17 (:parent #126))) :mode nil :granularity nil :parent (org-data (:begin 1 :contents-begin 1 :contents-end 2817 :end 2817 :robust-begin 3 :robust-end 2815 :post-blank 0 :post-affiliated 1 :path nil :mode org-data :CATEGORY nil :granularity nil) (section (:begin 1 :end 35 :contents-begin 1 :contents-end 34 :robust-begin 1 :robust-end 32 :post-blank 1 :post-affiliated 1 :mode first-section :granularity nil :parent #172) (keyword (:key "TITLE" :value "Genenetwork2 Dockerized" :begin 1 :end 34 :post-blank 0 :post-affiliated 1 :mode top-comment :granularity nil :parent #175))) #126 (headline (:raw-value "Introduction" :begin 260 :end 926 :pre-blank 1 :contents-begin 276 :contents-end 925 :robust-begin 278 :robust-end 923 :level 1 :priority nil :tags nil :todo-keyword nil :todo-type nil :post-blank 1 :footnote-section-p nil :archivedp nil :commentedp nil :post-affiliated 260 :title (#("Introduction" 0 12 (:parent #177))) :mode nil :granularity nil :parent #172) (section (:begin 276 :end 926 :contents-begin 276 :contents-end 925 :robust-begin 276 :robust-end 923 :post-blank 1 :post-affiliated 276 :mode section :granularity nil :parent #177) (paragraph (:begin 276 :end 600 :contents-begin 276 :contents-end 599 :post-blank 1 :post-affiliated 276 :mode planning :granularity nil :parent #180) #("The CI(Continuous Integration) system for Genenetwork2 uses " 0 60 (:parent #183)) (link (:type "https" :path "//github.com/features/actions" :format bracket :raw-link "https://github.com/features/actions" :application nil :search-option nil :begin 336 :end 391 :contents-begin 375 :contents-end 389 :post-blank 0 :parent #183) #("Github\nActions" 0 14 (:parent #187))) #(". As such, it's important to have a way to run tests using\nfacilities provided by GUIX in a reproducible way. This project\nleverages GUIX to generate a docker container from which the unittests\nare ran from.\n" 0 208 (:parent #183))) (paragraph (:begin 600 :end 830 :contents-begin 600 :contents-end 829 :post-blank 1 :post-affiliated 600 :mode nil :granularity nil :parent #180) #("Find instructions on how to set docker up inside GUIX " 0 54 (:parent #184)) (link (:type "https" :path "//github.com/pjotrp/guix-notes/blob/master/CONTAINERS.org#run-docker" :format bracket :raw-link "https://github.com/pjotrp/guix-notes/blob/master/CONTAINERS.org#run-docker" :application nil :search-option nil :begin 654 :end 738 :contents-begin 732 :contents-end 736 :post-blank 0 :parent #184) #("here" 0 4 (:parent #188))) #(". This\ndocument will not get into that. It's assumed that you have a working\ndocker setup.\n" 0 91 (:parent #184))) (paragraph (:begin 830 :end 925 :contents-begin 830 :contents-end 925 :post-blank 0 :post-affiliated 830 :mode nil :granularity nil :parent #180) #("The rest of this document outlines how the docker container used in\nthe CI builds was created.\n" 0 95 (:parent #185))))) (headline (:raw-value "Creating the Docker Images" :begin 926 :end 2194 :pre-blank 1 :contents-begin 956 :contents-end 2193 :robust-begin 958 :robust-end 2191 :level 1 :priority nil :tags nil :todo-keyword nil :todo-type nil :post-blank 1 :footnote-section-p nil :archivedp nil :commentedp nil :post-affiliated 926 :title (#("Creating the Docker Images" 0 26 (:parent #178))) :mode nil :granularity nil :parent #172) (section (:begin 956 :end 2194 :contents-begin 956 :contents-end 2193 :robust-begin 956 :robust-end 2191 :post-blank 1 :post-affiliated 956 :mode section :granularity nil :parent #178) (paragraph (:begin 956 :end 1071 :contents-begin 956 :contents-end 1070 :post-blank 1 :post-affiliated 956 :mode planning :granularity nil :parent #181) #("The general idea is that GUIX is used to generate a set of binaries,\nwhich will be added to a base mariaDB image.\n" 0 114 (:parent #184))) (paragraph (:begin 1071 :end 1117 :contents-begin 1071 :contents-end 1116 :post-blank 1 :post-affiliated 1071 :mode nil :granularity nil :parent #181) #("First create the gn2 tar archive by running:\n" 0 45 (:parent #185))) (src-block (:language "sh" :switches nil :parameters nil :begin 1117 :end 1343 :number-lines nil :preserve-indent nil :retain-labels t :use-labels t :label-fmt nil :value "env GUIX_PACKAGE_PATH=\"/home/bonface/projects/guix-bioinformatics:/home/bonface/projects/guix-past/modules\" \\\n ./pre-inst-env guix pack --no-grafts\\\n -S /gn2-profile=/ \\\n screen genenetwork2\n" :post-blank 1 :post-affiliated 1117 :mode nil :granularity nil :parent #181)) (paragraph (:begin 1343 :end 1387 :contents-begin 1343 :contents-end 1386 :post-blank 1 :post-affiliated 1343 :mode nil :granularity nil :parent #181) #("The output will look something similar to:\n" 0 43 (:parent #187))) (fixed-width (:begin 1387 :end 1454 :value "/gnu/store/x3m77vwaqcwba24p5s4lrb7w2ii16lj9-tarball-pack.tar.gz" :post-blank 2 :post-affiliated 1387 :mode nil :granularity nil :parent #181)) (paragraph (:begin 1454 :end 1640 :contents-begin 1454 :contents-end 1639 :post-blank 1 :post-affiliated 1454 :mode nil :granularity nil :parent #181) #("Now create a folder from which will host the following dockerfile. You\ncan name this file Dockerfile. Note that mariadb is the base image\nsince it already has mariadb installed for us.\n" 0 185 (:parent #189))) (src-block (:language "conf" :switches nil :parameters nil :begin 1640 :end 1847 :number-lines nil :preserve-indent nil :retain-labels t :use-labels t :label-fmt nil :value "FROM mariadb:latest\n\nCOPY ./gn2.tar.gz /tmp/gn2.tar.gz\nRUN tar -xzf /tmp/gn2.tar.gz -C / && rm -f /tmp/gn2.tar.gz && \\\n mkdir -p /usr/local/mysql /genotype_files/genotype/json\n" :post-blank 1 :post-affiliated 1640 :mode nil :granularity nil :parent #181)) (paragraph (:begin 1847 :end 1895 :contents-begin 1847 :contents-end 1894 :post-blank 1 :post-affiliated 1847 :mode nil :granularity nil :parent #181) #("Build the image(Note the fullstop at the end):\n" 0 47 (:parent #191))) (fixed-width (:begin 1895 :end 1955 :value "sudo docker build -t genenetwork2:latest -f Dockerfile ." :post-blank 2 :post-affiliated 1895 :mode nil :granularity nil :parent #181)) (paragraph (:begin 1955 :end 2009 :contents-begin 1955 :contents-end 2008 :post-blank 1 :post-affiliated 1955 :mode nil :granularity nil :parent #181) #("To load the image interactively you've just created:\n" 0 53 (:parent #193))) (fixed-width (:begin 2009 :end 2054 :value "docker run -ti \"genenetwork2:latest\" bash" :post-blank 2 :post-affiliated 2009 :mode nil :granularity nil :parent #181)) (paragraph (:begin 2054 :end 2141 :contents-begin 2054 :contents-end 2140 :post-blank 1 :post-affiliated 2054 :mode nil :granularity nil :parent #181) #("Assuming you have a docker instance running, you could always run\ncommands in it e.g:\n" 0 86 (:parent #195))) (fixed-width (:begin 2141 :end 2193 :value "docker run \"genenetwork2:latest\" python --version" :post-blank 1 :post-affiliated 2141 :mode nil :granularity nil :parent #181)))) (headline (:raw-value "Pushing to DockerHub" :begin 2194 :end 2817 :pre-blank 1 :contents-begin 2218 :contents-end 2817 :robust-begin 2220 :robust-end 2815 :level 1 :priority nil :tags nil :todo-keyword nil :todo-type nil :post-blank 0 :footnote-section-p nil :archivedp nil :commentedp nil :post-affiliated 2194 :title (#("Pushing to DockerHub" 0 20 (:parent #179))) :mode nil :granularity nil :parent #172) (section (:begin 2218 :end 2817 :contents-begin 2218 :contents-end 2817 :robust-begin 2218 :robust-end 2815 :post-blank 0 :post-affiliated 2218 :mode section :granularity nil :parent #179) (paragraph (:begin 2218 :end 2325 :contents-begin 2218 :contents-end 2324 :post-blank 1 :post-affiliated 2218 :mode planning :granularity nil :parent #182) #("We use DockerHub to store the docker images from which we use on our\nCI environment using Github Actions.\n" 0 106 (:parent #185))) (paragraph (:begin 2325 :end 2447 :contents-begin 2325 :contents-end 2446 :post-blank 1 :post-affiliated 2325 :mode nil :granularity nil :parent #182) #("To push to dockerhub, first get the image name by running " 0 58 (:parent #186)) (verbatim (:begin 2383 :end 2398 :post-blank 0 :value "docker\nimages" :parent #186)) #(". Push to dockerhub using a command similar to:\n" 0 48 (:parent #186))) (fixed-width (:begin 2447 :end 2494 :value "docker push bonfacekilz/genenetwork2:latest" :post-blank 2 :post-affiliated 2447 :mode nil :granularity nil :parent #182)) (paragraph (:begin 2494 :end 2537 :contents-begin 2494 :contents-end 2536 :post-blank 1 :post-affiliated 2494 :mode nil :granularity nil :parent #182) #("Right now, we have 2 images on DockerHub:\n" 0 42 (:parent #188))) (plain-list (:type unordered :begin 2537 :end 2817 :contents-begin 2537 :contents-end 2817 :structure ((2537 0 "- " nil nil nil 2701) (2701 0 "- " nil nil nil 2817)) :post-blank 0 :post-affiliated 2537 :mode nil :granularity nil :parent #182) (item (:bullet "- " :begin 2537 :end 2701 :contents-begin 2539 :contents-end 2701 :checkbox nil :counter nil :structure ((2537 0 "- " nil nil nil 2701) (2701 0 "- " nil nil nil 2817)) :pre-blank 0 :post-blank 0 :post-affiliated 2537 :tag nil :mode item :granularity nil :parent #189) (paragraph (:begin 2539 :end 2701 :contents-begin 2539 :contents-end 2701 :post-blank 0 :post-affiliated 2539 :mode nil :granularity nil :parent #192) (link (:type "https" :path "//hub.docker.com/repository/docker/bonfacekilz/python2-genenetwork2" :format plain :raw-link "https://hub.docker.com/repository/docker/bonfacekilz/python2-genenetwork2" :application nil :search-option nil :begin 2539 :end 2612 :contents-begin nil :contents-end nil :post-blank 0 :parent #195)) #(":\n Contains the python2 version of gn2. Don't use this. Please use the\n python3 image!\n" 0 89 (:parent #195)))) (item (:bullet "- " :begin 2701 :end 2817 :contents-begin 2703 :contents-end 2817 :checkbox nil :counter nil :structure ((2537 0 "- " nil nil nil 2701) (2701 0 "- " nil nil nil 2817)) :pre-blank 0 :post-blank 0 :post-affiliated 2701 :tag nil :mode item :granularity nil :parent #189) (paragraph (:begin 2703 :end 2817 :contents-begin 2703 :contents-end 2817 :post-blank 0 :post-affiliated 2703 :mode nil :granularity nil :parent #193) (link (:type "https" :path "//hub.docker.com/repository/docker/bonfacekilz/python3-genenetwork2" :format plain :raw-link "https://hub.docker.com/repository/docker/bonfacekilz/python3-genenetwork2" :application nil :search-option nil :begin 2703 :end 2776 :contents-begin nil :contents-end nil :post-blank 0 :parent #196)) #(":\n Contains the python3 version of gn2.\n" 0 41 (:parent #196))))))))) #102)) #78)) #46 (item (:bullet "- " :begin 147 :end 209 :contents-begin 149 :contents-end 209 :checkbox nil :counter nil :structure ((113 0 "- " nil nil nil 147) (147 0 "- " nil nil nil 209) (209 0 "- " nil nil nil 259)) :pre-blank 0 :post-blank 0 :post-affiliated 147 :tag nil :mode item :granularity nil :parent #78) (paragraph (:begin 149 :end 209 :contents-begin 149 :contents-end 209 :post-blank 0 :post-affiliated 149 :mode nil :granularity nil :parent #82) (link (:type "custom-id" :path "creating-the-docker-images" :format bracket :raw-link "#creating-the-docker-images" :application nil :search-option nil :begin 149 :end 208 :contents-begin 180 :contents-end 206 :post-blank 0 :parent #85) #("Creating the Docker Images" 0 26 (:parent #88))) #("\n" 0 1 (:parent #85)))) (item (:bullet "- " :begin 209 :end 259 :contents-begin 211 :contents-end 259 :checkbox nil :counter nil :structure ((113 0 "- " nil nil nil 147) (147 0 "- " nil nil nil 209) (209 0 "- " nil nil nil 259)) :pre-blank 0 :post-blank 0 :post-affiliated 209 :tag nil :mode item :granularity nil :parent #78) (paragraph (:begin 211 :end 259 :contents-begin 211 :contents-end 259 :post-blank 0 :post-affiliated 211 :mode nil :granularity nil :parent #83) (link (:type "custom-id" :path "pushing-to-dockerhub" :format bracket :raw-link "#pushing-to-dockerhub" :application nil :search-option nil :begin 211 :end 258 :contents-begin 236 :contents-end 256 :post-blank 0 :parent #86) #("Pushing to DockerHub" 0 20 (:parent #89))) #("\n" 0 1 (:parent #86)))))) #26)) #0 #("\n" 0 1 (:parent #26)))) #("Introduction" 0 12 (:parent #0))) (:export-options (body-only) :back-end #s(org-export-backend :name html :parent nil :transcoders ((bold . org-html-bold) (center-block . org-html-center-block) (clock . org-html-clock) (code . org-html-code) (drawer . org-html-drawer) (dynamic-block . org-html-dynamic-block) (entity . org-html-entity) (example-block . org-html-example-block) (export-block . org-html-export-block) (export-snippet . org-html-export-snippet) (fixed-width . org-html-fixed-width) (footnote-reference . org-html-footnote-reference) (headline . org-html-headline) (horizontal-rule . org-html-horizontal-rule) (inline-src-block . org-html-inline-src-block) (inlinetask . org-html-inlinetask) (inner-template . org-html-inner-template) (italic . org-html-italic) (item . org-html-item) (keyword . org-html-keyword) (latex-environment . org-html-latex-environment) (latex-fragment . org-html-latex-fragment) (line-break . org-html-line-break) (link . org-html-link) (node-property . org-html-node-property) (paragraph . org-html-paragraph) (plain-list . org-html-plain-list) (plain-text . org-html-plain-text) (planning . org-html-planning) (property-drawer . org-html-property-drawer) (quote-block . org-html-quote-block) (radio-target . org-html-radio-target) (section . org-html-section) (special-block . org-html-special-block) (src-block . org-html-src-block) (statistics-cookie . org-html-statistics-cookie) (strike-through . org-html-strike-through) (subscript . org-html-subscript) (superscript . org-html-superscript) (table . org-html-table) (table-cell . org-html-table-cell) (table-row . org-html-table-row) (target . org-html-target) (template . org-html-template) (timestamp . org-html-timestamp) (underline . org-html-underline) (verbatim . org-html-verbatim) (verse-block . org-html-verse-block)) :options ((:html-doctype "HTML_DOCTYPE" nil org-html-doctype) (:html-container "HTML_CONTAINER" nil org-html-container-element) (:html-content-class "HTML_CONTENT_CLASS" nil org-html-content-class) (:description "DESCRIPTION" nil nil newline) (:keywords "KEYWORDS" nil nil space) (:html-html5-fancy nil "html5-fancy" org-html-html5-fancy) (:html-link-use-abs-url nil "html-link-use-abs-url" org-html-link-use-abs-url) (:html-link-home "HTML_LINK_HOME" nil org-html-link-home) (:html-link-up "HTML_LINK_UP" nil org-html-link-up) (:html-mathjax "HTML_MATHJAX" nil "" space) (:html-equation-reference-format "HTML_EQUATION_REFERENCE_FORMAT" nil org-html-equation-reference-format t) (:html-postamble nil "html-postamble" org-html-postamble) (:html-preamble nil "html-preamble" org-html-preamble) (:html-head "HTML_HEAD" nil org-html-head newline) (:html-head-extra "HTML_HEAD_EXTRA" nil org-html-head-extra newline) (:subtitle "SUBTITLE" nil nil parse) (:html-head-include-default-style nil "html-style" org-html-head-include-default-style) (:html-head-include-scripts nil "html-scripts" org-html-head-include-scripts) (:html-allow-name-attribute-in-anchors nil nil org-html-allow-name-attribute-in-anchors) (:html-divs nil nil org-html-divs) (:html-checkbox-type nil nil org-html-checkbox-type) (:html-extension nil nil org-html-extension) (:html-footnote-format nil nil org-html-footnote-format) (:html-footnote-separator nil nil org-html-footnote-separator) (:html-footnotes-section nil nil org-html-footnotes-section) (:html-format-drawer-function nil nil org-html-format-drawer-function) (:html-format-headline-function nil nil org-html-format-headline-function) (:html-format-inlinetask-function nil nil org-html-format-inlinetask-function) (:html-home/up-format nil nil org-html-home/up-format) (:html-indent nil nil org-html-indent) (:html-infojs-options nil nil org-html-infojs-options) (:html-infojs-template nil nil org-html-infojs-template) (:html-inline-image-rules nil nil org-html-inline-image-rules) (:html-link-org-files-as-html nil nil org-html-link-org-files-as-html) (:html-mathjax-options nil nil org-html-mathjax-options) (:html-mathjax-template nil nil org-html-mathjax-template) (:html-metadata-timestamp-format nil nil org-html-metadata-timestamp-format) (:html-postamble-format nil nil org-html-postamble-format) (:html-preamble-format nil nil org-html-preamble-format) (:html-prefer-user-labels nil nil org-html-prefer-user-labels) (:html-self-link-headlines nil nil org-html-self-link-headlines) (:html-table-align-individual-fields nil nil org-html-table-align-individual-fields) (:html-table-caption-above nil nil org-html-table-caption-above) (:html-table-data-tags nil nil org-html-table-data-tags) (:html-table-header-tags nil nil org-html-table-header-tags) (:html-table-use-header-tags-for-first-column nil nil org-html-table-use-header-tags-for-first-column) (:html-tag-class-prefix nil nil org-html-tag-class-prefix) (:html-text-markup-alist nil nil org-html-text-markup-alist) (:html-todo-kwd-class-prefix nil nil org-html-todo-kwd-class-prefix) (:html-toplevel-hlevel nil nil org-html-toplevel-hlevel) (:html-use-infojs nil nil org-html-use-infojs) (:html-validation-link nil nil org-html-validation-link) (:html-viewport nil nil org-html-viewport) (:html-inline-images nil nil org-html-inline-images) (:html-table-attributes nil nil org-html-table-default-attributes) (:html-table-row-open-tag nil nil org-html-table-row-open-tag) (:html-table-row-close-tag nil nil org-html-table-row-close-tag) (:html-xml-declaration nil nil org-html-xml-declaration) (:html-wrap-src-lines nil nil org-html-wrap-src-lines) (:html-klipsify-src nil nil org-html-klipsify-src) (:html-klipse-css nil nil org-html-klipse-css) (:html-klipse-js nil nil org-html-klipse-js) (:html-klipse-selection-script nil nil org-html-klipse-selection-script) (:infojs-opt "INFOJS_OPT" nil nil) (:creator "CREATOR" nil org-html-creator-string) (:with-latex nil "tex" org-html-with-latex) (:latex-header "LATEX_HEADER" nil nil newline)) :filters ((:filter-options . org-html-infojs-install-script) (:filter-parse-tree . org-html-image-link-filter) (:filter-final-output . org-html-final-function)) :blocks nil :menu (104 "Export to HTML" ((72 "As HTML buffer" org-html-export-as-html) (104 "As HTML file" org-html-export-to-html) (111 "As HTML file and open" (lambda (a s v b) (if a (org-html-export-to-html t s v b) (org-open-file (org-html-export-to-html nil s v b)))))))) :translate-alist ((bold . org-html-bold) (center-block . org-html-center-block) (clock . org-html-clock) (code . org-html-code) (drawer . org-html-drawer) (dynamic-block . org-html-dynamic-block) (entity . org-html-entity) (example-block . org-html-example-block) (export-block . org-html-export-block) (export-snippet . org-html-export-snippet) (fixed-width . org-html-fixed-width) (footnote-reference . org-html-footnote-reference) (headline . org-html-headline) (horizontal-rule . org-html-horizontal-rule) (inline-src-block . org-html-inline-src-block) (inlinetask . org-html-inlinetask) (inner-template . org-html-inner-template) (italic . org-html-italic) (item . org-html-item) (keyword . org-html-keyword) (latex-environment . org-html-latex-environment) (latex-fragment . org-html-latex-fragment) (line-break . org-html-line-break) (link . org-html-link) (node-property . org-html-node-property) (paragraph . org-html-paragraph) (plain-list . org-html-plain-list) (plain-text . org-html-plain-text) (planning . org-html-planning) (property-drawer . org-html-property-drawer) (quote-block . org-html-quote-block) (radio-target . org-html-radio-target) (section . org-html-section) (special-block . org-html-special-block) (src-block . org-html-src-block) (statistics-cookie . org-html-statistics-cookie) (strike-through . org-html-strike-through) (subscript . org-html-subscript) (superscript . org-html-superscript) (table . org-html-table) (table-cell . org-html-table-cell) (table-row . org-html-table-row) (target . org-html-target) (template . org-html-template) (timestamp . org-html-timestamp) (underline . org-html-underline) (verbatim . org-html-verbatim) (verse-block . org-html-verse-block)) :exported-data # :input-buffer " *temp*" :input-file nil :html-doctype "xhtml-strict" :html-container "div" :html-content-class "content" :description nil :keywords nil :html-html5-fancy nil :html-link-use-abs-url nil :html-link-home "" :html-link-up "" :html-mathjax "" :html-equation-reference-format "\\eqref{%s}" :html-postamble auto :html-preamble t :html-head "" :html-head-extra "" :subtitle nil :html-head-include-default-style t :html-head-include-scripts nil :html-allow-name-attribute-in-anchors nil :html-divs ((preamble "div" "preamble") (content "div" "content") (postamble "div" "postamble")) :html-checkbox-type ascii :html-extension "html" :html-footnote-format "%s" :html-footnote-separator ", " :html-footnotes-section "
\n

%s:

\n
\n%s\n
\n
" :html-format-drawer-function #f(compiled-function (name contents) #) :html-format-headline-function org-html-format-headline-default-function :html-format-inlinetask-function org-html-format-inlinetask-default-function :html-home/up-format "
\n UP \n |\n HOME \n
" :html-indent nil :html-infojs-options ((path . "https://orgmode.org/org-info.js") (view . "info") (toc . :with-toc) (ftoc . "0") (tdepth . "max") (sdepth . "max") (mouse . "underline") (buttons . "0") (ltoc . "1") (up . :html-link-up) (home . :html-link-home)) :html-infojs-template "\n\n" :html-inline-image-rules (("file" . "\\(?:\\.\\(?:gif\\|jp\\(?:e?g\\)\\|png\\|svg\\|webp\\)\\)") ("http" . "\\(?:\\.\\(?:gif\\|jp\\(?:e?g\\)\\|png\\|svg\\|webp\\)\\)") ("https" . "\\(?:\\.\\(?:gif\\|jp\\(?:e?g\\)\\|png\\|svg\\|webp\\)\\)")) :html-link-org-files-as-html t :html-mathjax-options ((path "https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-mml-chtml.js") (scale 1.0) (align "center") (font "mathjax-modern") (overflow "overflow") (tags "ams") (indent "0em") (multlinewidth "85%") (tagindent ".8em") (tagside "right")) :html-mathjax-template "\n\n\n" :html-metadata-timestamp-format "%Y-%m-%d %a %H:%M" :html-postamble-format (("en" "

Author: %a (%e)

\n

Date: %d

\n

%c

\n

%v

")) :html-preamble-format (("en" "")) :html-prefer-user-labels nil :html-self-link-headlines nil :html-table-align-individual-fields t :html-table-caption-above t :html-table-data-tags ("" . "") :html-table-header-tags ("" . "") :html-table-use-header-tags-for-first-column nil :html-tag-class-prefix "" :html-text-markup-alist ((bold . "%s") (code . "%s") (italic . "%s") (strike-through . "%s") (underline . "%s") (verbatim . "%s")) :html-todo-kwd-class-prefix "" :html-toplevel-hlevel 2 :html-use-infojs when-configured :html-validation-link "Validate" :html-viewport ((width "device-width") (initial-scale "1") (minimum-scale "") (maximum-scale "") (user-scalable "")) :html-inline-images t :html-table-attributes (:border "2" :cellspacing "0" :cellpadding "6" :rules "groups" :frame "hsides") :html-table-row-open-tag "" :html-table-row-close-tag "" :html-xml-declaration (("html" . "") ("php" . "\"; ?>")) :html-wrap-src-lines nil :html-klipsify-src nil :html-klipse-css "https://storage.googleapis.com/app.klipse.tech/css/codemirror.css" :html-klipse-js "https://storage.googleapis.com/app.klipse.tech/plugin_prod/js/klipse_plugin.min.js" :html-klipse-selection-script "window.klipse_settings = {selector_eval_html: '.src-html',\n selector_eval_js: '.src-js',\n selector_eval_python_client: '.src-python',\n selector_eval_scheme: '.src-scheme',\n selector: '.src-clojure',\n selector_eval_ruby: '.src-ruby'};" :infojs-opt nil :creator "Emacs 29.4 (Org mode 9.6.15)" :with-latex t :latex-header nil :title (#("Genenetwork2 Dockerized" 0 23 (:parent #148))) :date nil :author (#("unknown" 0 7 (:parent #152))) :email "unknown@genenetwork-development" :language "en" :select-tags ("export") :exclude-tags ("noexport") :headline-levels 3 :preserve-breaks nil :section-numbers nil :time-stamp-file t :with-archived-trees headline :with-author t :with-broken-links nil :with-clocks nil :with-creator nil :with-date t :with-drawers (not "LOGBOOK") :with-email nil :with-emphasize t :with-entities t :with-fixed-width t :with-footnotes t :with-inlinetasks t :with-planning nil :with-priority nil :with-properties nil :with-smart-quotes nil :with-special-strings t :with-statistics-cookies t :with-sub-superscript t :with-toc nil :with-tables t :with-tags t :with-tasks t :with-timestamps t :with-title t :with-todo-keywords t :cite-export (basic nil nil) :bibliography nil :filter-body nil :filter-bold nil :filter-babel-call nil :filter-center-block nil :filter-clock nil :filter-code nil :filter-diary-sexp nil :filter-drawer nil :filter-dynamic-block nil :filter-entity nil :filter-example-block nil :filter-export-block nil :filter-export-snippet nil :filter-final-output (org-html-final-function) :filter-fixed-width nil :filter-footnote-definition nil :filter-footnote-reference nil :filter-headline nil :filter-horizontal-rule nil :filter-inline-babel-call nil :filter-inline-src-block nil :filter-inlinetask nil :filter-italic nil :filter-item nil :filter-keyword nil :filter-latex-environment nil :filter-latex-fragment nil :filter-line-break nil :filter-link nil :filter-node-property nil :filter-options (org-html-infojs-install-script) :filter-paragraph nil :filter-parse-tree (org-html-image-link-filter) :filter-plain-list nil :filter-plain-text nil :filter-planning nil :filter-property-drawer nil :filter-quote-block nil :filter-radio-target nil :filter-section nil :filter-special-block nil :filter-src-block nil :filter-statistics-cookie nil :filter-strike-through nil :filter-subscript nil :filter-superscript nil :filter-table nil :filter-table-cell nil :filter-table-row nil :filter-target nil :filter-timestamp nil :filter-underline nil :filter-verbatim nil :filter-verse-block nil :ignore-list nil :parse-tree (org-data (:begin 1 :contents-begin 1 :contents-end 2817 :end 2817 :robust-begin 3 :robust-end 2815 :post-blank 0 :post-affiliated 1 :path nil :mode org-data :CATEGORY nil :granularity nil) (section (:begin 1 :end 35 :contents-begin 1 :contents-end 34 :robust-begin 1 :robust-end 32 :post-blank 1 :post-affiliated 1 :mode first-section :granularity nil :parent #338) (keyword (:key "TITLE" :value "Genenetwork2 Dockerized" :begin 1 :end 34 :post-blank 0 :post-affiliated 1 :mode top-comment :granularity nil :parent #341))) (headline (:raw-value "Table of Contents" :begin 35 :end 260 :pre-blank 0 :contents-begin 113 :contents-end 259 :robust-begin 115 :robust-end 257 :level 1 :priority nil :tags ("TOC") :todo-keyword nil :todo-type nil :post-blank 1 :footnote-section-p nil :archivedp nil :commentedp nil :post-affiliated 35 :title (#("Table of Contents" 0 17 (:parent #342))) :mode nil :granularity nil :parent #338) (section (:begin 113 :end 260 :contents-begin 113 :contents-end 259 :robust-begin 113 :robust-end 257 :post-blank 1 :post-affiliated 113 :mode section :granularity nil :parent #342) (plain-list (:type unordered :begin 113 :end 259 :contents-begin 113 :contents-end 259 :structure ((113 0 "- " nil nil nil 147) (147 0 "- " nil nil nil 209) (209 0 "- " nil nil nil 259)) :post-blank 0 :post-affiliated 113 :mode planning :granularity nil :parent #345) (item (:bullet "- " :begin 113 :end 147 :contents-begin 115 :contents-end 147 :checkbox nil :counter nil :structure ((113 0 "- " nil nil nil 147) (147 0 "- " nil nil nil 209) (209 0 "- " nil nil nil 259)) :pre-blank 0 :post-blank 0 :post-affiliated 113 :tag nil :mode item :granularity nil :parent #348) (paragraph (:begin 115 :end 147 :contents-begin 115 :contents-end 147 :post-blank 0 :post-affiliated 115 :mode nil :granularity nil :parent #351) (link (:type "custom-id" :path "introduction" :format bracket :raw-link "#introduction" :application nil :search-option nil :begin 115 :end 146 :contents-begin 132 :contents-end 144 :post-blank 0 :parent #354) #("Introduction" 0 12 (:parent #357))) #("\n" 0 1 (:parent #354)))) (item (:bullet "- " :begin 147 :end 209 :contents-begin 149 :contents-end 209 :checkbox nil :counter nil :structure ((113 0 "- " nil nil nil 147) (147 0 "- " nil nil nil 209) (209 0 "- " nil nil nil 259)) :pre-blank 0 :post-blank 0 :post-affiliated 147 :tag nil :mode item :granularity nil :parent #348) (paragraph (:begin 149 :end 209 :contents-begin 149 :contents-end 209 :post-blank 0 :post-affiliated 149 :mode nil :granularity nil :parent #352) (link (:type "custom-id" :path "creating-the-docker-images" :format bracket :raw-link "#creating-the-docker-images" :application nil :search-option nil :begin 149 :end 208 :contents-begin 180 :contents-end 206 :post-blank 0 :parent #355) #("Creating the Docker Images" 0 26 (:parent #358))) #("\n" 0 1 (:parent #355)))) (item (:bullet "- " :begin 209 :end 259 :contents-begin 211 :contents-end 259 :checkbox nil :counter nil :structure ((113 0 "- " nil nil nil 147) (147 0 "- " nil nil nil 209) (209 0 "- " nil nil nil 259)) :pre-blank 0 :post-blank 0 :post-affiliated 209 :tag nil :mode item :granularity nil :parent #348) (paragraph (:begin 211 :end 259 :contents-begin 211 :contents-end 259 :post-blank 0 :post-affiliated 211 :mode nil :granularity nil :parent #353) (link (:type "custom-id" :path "pushing-to-dockerhub" :format bracket :raw-link "#pushing-to-dockerhub" :application nil :search-option nil :begin 211 :end 258 :contents-begin 236 :contents-end 256 :post-blank 0 :parent #356) #("Pushing to DockerHub" 0 20 (:parent #359))) #("\n" 0 1 (:parent #356))))))) (headline (:raw-value "Introduction" :begin 260 :end 926 :pre-blank 1 :contents-begin 276 :contents-end 925 :robust-begin 278 :robust-end 923 :level 1 :priority nil :tags nil :todo-keyword nil :todo-type nil :post-blank 1 :footnote-section-p nil :archivedp nil :commentedp nil :post-affiliated 260 :title (#("Introduction" 0 12 (:parent #343))) :mode nil :granularity nil :parent #338) (section (:begin 276 :end 926 :contents-begin 276 :contents-end 925 :robust-begin 276 :robust-end 923 :post-blank 1 :post-affiliated 276 :mode section :granularity nil :parent #343) (paragraph (:begin 276 :end 600 :contents-begin 276 :contents-end 599 :post-blank 1 :post-affiliated 276 :mode planning :granularity nil :parent #346) #("The CI(Continuous Integration) system for Genenetwork2 uses " 0 60 (:parent #349)) (link (:type "https" :path "//github.com/features/actions" :format bracket :raw-link "https://github.com/features/actions" :application nil :search-option nil :begin 336 :end 391 :contents-begin 375 :contents-end 389 :post-blank 0 :parent #349) #("Github\nActions" 0 14 (:parent #353))) #(". As such, it's important to have a way to run tests using\nfacilities provided by GUIX in a reproducible way. This project\nleverages GUIX to generate a docker container from which the unittests\nare ran from.\n" 0 208 (:parent #349))) (paragraph (:begin 600 :end 830 :contents-begin 600 :contents-end 829 :post-blank 1 :post-affiliated 600 :mode nil :granularity nil :parent #346) #("Find instructions on how to set docker up inside GUIX " 0 54 (:parent #350)) (link (:type "https" :path "//github.com/pjotrp/guix-notes/blob/master/CONTAINERS.org#run-docker" :format bracket :raw-link "https://github.com/pjotrp/guix-notes/blob/master/CONTAINERS.org#run-docker" :application nil :search-option nil :begin 654 :end 738 :contents-begin 732 :contents-end 736 :post-blank 0 :parent #350) #("here" 0 4 (:parent #354))) #(". This\ndocument will not get into that. It's assumed that you have a working\ndocker setup.\n" 0 91 (:parent #350))) (paragraph (:begin 830 :end 925 :contents-begin 830 :contents-end 925 :post-blank 0 :post-affiliated 830 :mode nil :granularity nil :parent #346) #("The rest of this document outlines how the docker container used in\nthe CI builds was created.\n" 0 95 (:parent #351))))) (headline (:raw-value "Creating the Docker Images" :begin 926 :end 2194 :pre-blank 1 :contents-begin 956 :contents-end 2193 :robust-begin 958 :robust-end 2191 :level 1 :priority nil :tags nil :todo-keyword nil :todo-type nil :post-blank 1 :footnote-section-p nil :archivedp nil :commentedp nil :post-affiliated 926 :title (#("Creating the Docker Images" 0 26 (:parent #344))) :mode nil :granularity nil :parent #338) (section (:begin 956 :end 2194 :contents-begin 956 :contents-end 2193 :robust-begin 956 :robust-end 2191 :post-blank 1 :post-affiliated 956 :mode section :granularity nil :parent #344) (paragraph (:begin 956 :end 1071 :contents-begin 956 :contents-end 1070 :post-blank 1 :post-affiliated 956 :mode planning :granularity nil :parent #347) #("The general idea is that GUIX is used to generate a set of binaries,\nwhich will be added to a base mariaDB image.\n" 0 114 (:parent #350))) (paragraph (:begin 1071 :end 1117 :contents-begin 1071 :contents-end 1116 :post-blank 1 :post-affiliated 1071 :mode nil :granularity nil :parent #347) #("First create the gn2 tar archive by running:\n" 0 45 (:parent #351))) (src-block (:language "sh" :switches nil :parameters nil :begin 1117 :end 1343 :number-lines nil :preserve-indent nil :retain-labels t :use-labels t :label-fmt nil :value "env GUIX_PACKAGE_PATH=\"/home/bonface/projects/guix-bioinformatics:/home/bonface/projects/guix-past/modules\" \\\n ./pre-inst-env guix pack --no-grafts\\\n -S /gn2-profile=/ \\\n screen genenetwork2\n" :post-blank 1 :post-affiliated 1117 :mode nil :granularity nil :parent #347)) (paragraph (:begin 1343 :end 1387 :contents-begin 1343 :contents-end 1386 :post-blank 1 :post-affiliated 1343 :mode nil :granularity nil :parent #347) #("The output will look something similar to:\n" 0 43 (:parent #353))) (fixed-width (:begin 1387 :end 1454 :value "/gnu/store/x3m77vwaqcwba24p5s4lrb7w2ii16lj9-tarball-pack.tar.gz" :post-blank 2 :post-affiliated 1387 :mode nil :granularity nil :parent #347)) (paragraph (:begin 1454 :end 1640 :contents-begin 1454 :contents-end 1639 :post-blank 1 :post-affiliated 1454 :mode nil :granularity nil :parent #347) #("Now create a folder from which will host the following dockerfile. You\ncan name this file Dockerfile. Note that mariadb is the base image\nsince it already has mariadb installed for us.\n" 0 185 (:parent #355))) (src-block (:language "conf" :switches nil :parameters nil :begin 1640 :end 1847 :number-lines nil :preserve-indent nil :retain-labels t :use-labels t :label-fmt nil :value "FROM mariadb:latest\n\nCOPY ./gn2.tar.gz /tmp/gn2.tar.gz\nRUN tar -xzf /tmp/gn2.tar.gz -C / && rm -f /tmp/gn2.tar.gz && \\\n mkdir -p /usr/local/mysql /genotype_files/genotype/json\n" :post-blank 1 :post-affiliated 1640 :mode nil :granularity nil :parent #347)) (paragraph (:begin 1847 :end 1895 :contents-begin 1847 :contents-end 1894 :post-blank 1 :post-affiliated 1847 :mode nil :granularity nil :parent #347) #("Build the image(Note the fullstop at the end):\n" 0 47 (:parent #357))) (fixed-width (:begin 1895 :end 1955 :value "sudo docker build -t genenetwork2:latest -f Dockerfile ." :post-blank 2 :post-affiliated 1895 :mode nil :granularity nil :parent #347)) (paragraph (:begin 1955 :end 2009 :contents-begin 1955 :contents-end 2008 :post-blank 1 :post-affiliated 1955 :mode nil :granularity nil :parent #347) #("To load the image interactively you've just created:\n" 0 53 (:parent #359))) (fixed-width (:begin 2009 :end 2054 :value "docker run -ti \"genenetwork2:latest\" bash" :post-blank 2 :post-affiliated 2009 :mode nil :granularity nil :parent #347)) (paragraph (:begin 2054 :end 2141 :contents-begin 2054 :contents-end 2140 :post-blank 1 :post-affiliated 2054 :mode nil :granularity nil :parent #347) #("Assuming you have a docker instance running, you could always run\ncommands in it e.g:\n" 0 86 (:parent #361))) (fixed-width (:begin 2141 :end 2193 :value "docker run \"genenetwork2:latest\" python --version" :post-blank 1 :post-affiliated 2141 :mode nil :granularity nil :parent #347)))) (headline (:raw-value "Pushing to DockerHub" :begin 2194 :end 2817 :pre-blank 1 :contents-begin 2218 :contents-end 2817 :robust-begin 2220 :robust-end 2815 :level 1 :priority nil :tags nil :todo-keyword nil :todo-type nil :post-blank 0 :footnote-section-p nil :archivedp nil :commentedp nil :post-affiliated 2194 :title (#("Pushing to DockerHub" 0 20 (:parent #345))) :mode nil :granularity nil :parent #338) (section (:begin 2218 :end 2817 :contents-begin 2218 :contents-end 2817 :robust-begin 2218 :robust-end 2815 :post-blank 0 :post-affiliated 2218 :mode section :granularity nil :parent #345) (paragraph (:begin 2218 :end 2325 :contents-begin 2218 :contents-end 2324 :post-blank 1 :post-affiliated 2218 :mode planning :granularity nil :parent #348) #("We use DockerHub to store the docker images from which we use on our\nCI environment using Github Actions.\n" 0 106 (:parent #351))) (paragraph (:begin 2325 :end 2447 :contents-begin 2325 :contents-end 2446 :post-blank 1 :post-affiliated 2325 :mode nil :granularity nil :parent #348) #("To push to dockerhub, first get the image name by running " 0 58 (:parent #352)) (verbatim (:begin 2383 :end 2398 :post-blank 0 :value "docker\nimages" :parent #352)) #(". Push to dockerhub using a command similar to:\n" 0 48 (:parent #352))) (fixed-width (:begin 2447 :end 2494 :value "docker push bonfacekilz/genenetwork2:latest" :post-blank 2 :post-affiliated 2447 :mode nil :granularity nil :parent #348)) (paragraph (:begin 2494 :end 2537 :contents-begin 2494 :contents-end 2536 :post-blank 1 :post-affiliated 2494 :mode nil :granularity nil :parent #348) #("Right now, we have 2 images on DockerHub:\n" 0 42 (:parent #354))) (plain-list (:type unordered :begin 2537 :end 2817 :contents-begin 2537 :contents-end 2817 :structure ((2537 0 "- " nil nil nil 2701) (2701 0 "- " nil nil nil 2817)) :post-blank 0 :post-affiliated 2537 :mode nil :granularity nil :parent #348) (item (:bullet "- " :begin 2537 :end 2701 :contents-begin 2539 :contents-end 2701 :checkbox nil :counter nil :structure ((2537 0 "- " nil nil nil 2701) (2701 0 "- " nil nil nil 2817)) :pre-blank 0 :post-blank 0 :post-affiliated 2537 :tag nil :mode item :granularity nil :parent #355) (paragraph (:begin 2539 :end 2701 :contents-begin 2539 :contents-end 2701 :post-blank 0 :post-affiliated 2539 :mode nil :granularity nil :parent #358) (link (:type "https" :path "//hub.docker.com/repository/docker/bonfacekilz/python2-genenetwork2" :format plain :raw-link "https://hub.docker.com/repository/docker/bonfacekilz/python2-genenetwork2" :application nil :search-option nil :begin 2539 :end 2612 :contents-begin nil :contents-end nil :post-blank 0 :parent #361)) #(":\n Contains the python2 version of gn2. Don't use this. Please use the\n python3 image!\n" 0 89 (:parent #361)))) (item (:bullet "- " :begin 2701 :end 2817 :contents-begin 2703 :contents-end 2817 :checkbox nil :counter nil :structure ((2537 0 "- " nil nil nil 2701) (2701 0 "- " nil nil nil 2817)) :pre-blank 0 :post-blank 0 :post-affiliated 2701 :tag nil :mode item :granularity nil :parent #355) (paragraph (:begin 2703 :end 2817 :contents-begin 2703 :contents-end 2817 :post-blank 0 :post-affiliated 2703 :mode nil :granularity nil :parent #359) (link (:type "https" :path "//hub.docker.com/repository/docker/bonfacekilz/python3-genenetwork2" :format plain :raw-link "https://hub.docker.com/repository/docker/bonfacekilz/python3-genenetwork2" :application nil :search-option nil :begin 2703 :end 2776 :contents-begin nil :contents-end nil :post-blank 0 :parent #362)) #(":\n Contains the python3 version of gn2.\n" 0 41 (:parent #362)))))))) :headline-offset 0 :headline-numbering nil :id-alist nil :citations nil :id-local-cache #)) #f(compiled-function (element) #)((link (:type "custom-id" :path "introduction" :format bracket :raw-link "#introduction" :application nil :search-option nil :begin 115 :end 146 :contents-begin 132 :contents-end 144 :post-blank 0 :parent (paragraph (:begin 115 :end 147 :contents-begin 115 :contents-end 147 :post-blank 0 :post-affiliated 115 :mode nil :granularity nil :parent (item (:bullet "- " :begin 113 :end 147 :contents-begin 115 :contents-end 147 :checkbox nil :counter nil :structure ((113 0 "- " nil nil nil 147) (147 0 "- " nil nil nil 209) (209 0 "- " nil nil nil 259)) :pre-blank 0 :post-blank 0 :post-affiliated 113 :tag nil :mode item :granularity nil :parent (plain-list (:type unordered :begin 113 :end 259 :contents-begin 113 :contents-end 259 :structure ((113 0 "- " nil nil nil 147) (147 0 "- " nil nil nil 209) (209 0 "- " nil nil nil 259)) :post-blank 0 :post-affiliated 113 :mode planning :granularity nil :parent (section (:begin 113 :end 260 :contents-begin 113 :contents-end 259 :robust-begin 113 :robust-end 257 :post-blank 1 :post-affiliated 113 :mode section :granularity nil :parent (headline (:raw-value "Table of Contents" :begin 35 :end 260 :pre-blank 0 :contents-begin 113 :contents-end 259 :robust-begin 115 :robust-end 257 :level 1 :priority nil :tags ("TOC") :todo-keyword nil :todo-type nil :post-blank 1 :footnote-section-p nil :archivedp nil :commentedp nil :post-affiliated 35 :title (#("Table of Contents" 0 17 (:parent #126))) :mode nil :granularity nil :parent (org-data (:begin 1 :contents-begin 1 :contents-end 2817 :end 2817 :robust-begin 3 :robust-end 2815 :post-blank 0 :post-affiliated 1 :path nil :mode org-data :CATEGORY nil :granularity nil) (section (:begin 1 :end 35 :contents-begin 1 :contents-end 34 :robust-begin 1 :robust-end 32 :post-blank 1 :post-affiliated 1 :mode first-section :granularity nil :parent #172) (keyword (:key "TITLE" :value "Genenetwork2 Dockerized" :begin 1 :end 34 :post-blank 0 :post-affiliated 1 :mode top-comment :granularity nil :parent #175))) #126 (headline (:raw-value "Introduction" :begin 260 :end 926 :pre-blank 1 :contents-begin 276 :contents-end 925 :robust-begin 278 :robust-end 923 :level 1 :priority nil :tags nil :todo-keyword nil :todo-type nil :post-blank 1 :footnote-section-p nil :archivedp nil :commentedp nil :post-affiliated 260 :title (#("Introduction" 0 12 (:parent #177))) :mode nil :granularity nil :parent #172) (section (:begin 276 :end 926 :contents-begin 276 :contents-end 925 :robust-begin 276 :robust-end 923 :post-blank 1 :post-affiliated 276 :mode section :granularity nil :parent #177) (paragraph (:begin 276 :end 600 :contents-begin 276 :contents-end 599 :post-blank 1 :post-affiliated 276 :mode planning :granularity nil :parent #180) #("The CI(Continuous Integration) system for Genenetwork2 uses " 0 60 (:parent #183)) (link (:type "https" :path "//github.com/features/actions" :format bracket :raw-link "https://github.com/features/actions" :application nil :search-option nil :begin 336 :end 391 :contents-begin 375 :contents-end 389 :post-blank 0 :parent #183) #("Github\nActions" 0 14 (:parent #187))) #(". As such, it's important to have a way to run tests using\nfacilities provided by GUIX in a reproducible way. This project\nleverages GUIX to generate a docker container from which the unittests\nare ran from.\n" 0 208 (:parent #183))) (paragraph (:begin 600 :end 830 :contents-begin 600 :contents-end 829 :post-blank 1 :post-affiliated 600 :mode nil :granularity nil :parent #180) #("Find instructions on how to set docker up inside GUIX " 0 54 (:parent #184)) (link (:type "https" :path "//github.com/pjotrp/guix-notes/blob/master/CONTAINERS.org#run-docker" :format bracket :raw-link "https://github.com/pjotrp/guix-notes/blob/master/CONTAINERS.org#run-docker" :application nil :search-option nil :begin 654 :end 738 :contents-begin 732 :contents-end 736 :post-blank 0 :parent #184) #("here" 0 4 (:parent #188))) #(". This\ndocument will not get into that. It's assumed that you have a working\ndocker setup.\n" 0 91 (:parent #184))) (paragraph (:begin 830 :end 925 :contents-begin 830 :contents-end 925 :post-blank 0 :post-affiliated 830 :mode nil :granularity nil :parent #180) #("The rest of this document outlines how the docker container used in\nthe CI builds was created.\n" 0 95 (:parent #185))))) (headline (:raw-value "Creating the Docker Images" :begin 926 :end 2194 :pre-blank 1 :contents-begin 956 :contents-end 2193 :robust-begin 958 :robust-end 2191 :level 1 :priority nil :tags nil :todo-keyword nil :todo-type nil :post-blank 1 :footnote-section-p nil :archivedp nil :commentedp nil :post-affiliated 926 :title (#("Creating the Docker Images" 0 26 (:parent #178))) :mode nil :granularity nil :parent #172) (section (:begin 956 :end 2194 :contents-begin 956 :contents-end 2193 :robust-begin 956 :robust-end 2191 :post-blank 1 :post-affiliated 956 :mode section :granularity nil :parent #178) (paragraph (:begin 956 :end 1071 :contents-begin 956 :contents-end 1070 :post-blank 1 :post-affiliated 956 :mode planning :granularity nil :parent #181) #("The general idea is that GUIX is used to generate a set of binaries,\nwhich will be added to a base mariaDB image.\n" 0 114 (:parent #184))) (paragraph (:begin 1071 :end 1117 :contents-begin 1071 :contents-end 1116 :post-blank 1 :post-affiliated 1071 :mode nil :granularity nil :parent #181) #("First create the gn2 tar archive by running:\n" 0 45 (:parent #185))) (src-block (:language "sh" :switches nil :parameters nil :begin 1117 :end 1343 :number-lines nil :preserve-indent nil :retain-labels t :use-labels t :label-fmt nil :value "env GUIX_PACKAGE_PATH=\"/home/bonface/projects/guix-bioinformatics:/home/bonface/projects/guix-past/modules\" \\\n ./pre-inst-env guix pack --no-grafts\\\n -S /gn2-profile=/ \\\n screen genenetwork2\n" :post-blank 1 :post-affiliated 1117 :mode nil :granularity nil :parent #181)) (paragraph (:begin 1343 :end 1387 :contents-begin 1343 :contents-end 1386 :post-blank 1 :post-affiliated 1343 :mode nil :granularity nil :parent #181) #("The output will look something similar to:\n" 0 43 (:parent #187))) (fixed-width (:begin 1387 :end 1454 :value "/gnu/store/x3m77vwaqcwba24p5s4lrb7w2ii16lj9-tarball-pack.tar.gz" :post-blank 2 :post-affiliated 1387 :mode nil :granularity nil :parent #181)) (paragraph (:begin 1454 :end 1640 :contents-begin 1454 :contents-end 1639 :post-blank 1 :post-affiliated 1454 :mode nil :granularity nil :parent #181) #("Now create a folder from which will host the following dockerfile. You\ncan name this file Dockerfile. Note that mariadb is the base image\nsince it already has mariadb installed for us.\n" 0 185 (:parent #189))) (src-block (:language "conf" :switches nil :parameters nil :begin 1640 :end 1847 :number-lines nil :preserve-indent nil :retain-labels t :use-labels t :label-fmt nil :value "FROM mariadb:latest\n\nCOPY ./gn2.tar.gz /tmp/gn2.tar.gz\nRUN tar -xzf /tmp/gn2.tar.gz -C / && rm -f /tmp/gn2.tar.gz && \\\n mkdir -p /usr/local/mysql /genotype_files/genotype/json\n" :post-blank 1 :post-affiliated 1640 :mode nil :granularity nil :parent #181)) (paragraph (:begin 1847 :end 1895 :contents-begin 1847 :contents-end 1894 :post-blank 1 :post-affiliated 1847 :mode nil :granularity nil :parent #181) #("Build the image(Note the fullstop at the end):\n" 0 47 (:parent #191))) (fixed-width (:begin 1895 :end 1955 :value "sudo docker build -t genenetwork2:latest -f Dockerfile ." :post-blank 2 :post-affiliated 1895 :mode nil :granularity nil :parent #181)) (paragraph (:begin 1955 :end 2009 :contents-begin 1955 :contents-end 2008 :post-blank 1 :post-affiliated 1955 :mode nil :granularity nil :parent #181) #("To load the image interactively you've just created:\n" 0 53 (:parent #193))) (fixed-width (:begin 2009 :end 2054 :value "docker run -ti \"genenetwork2:latest\" bash" :post-blank 2 :post-affiliated 2009 :mode nil :granularity nil :parent #181)) (paragraph (:begin 2054 :end 2141 :contents-begin 2054 :contents-end 2140 :post-blank 1 :post-affiliated 2054 :mode nil :granularity nil :parent #181) #("Assuming you have a docker instance running, you could always run\ncommands in it e.g:\n" 0 86 (:parent #195))) (fixed-width (:begin 2141 :end 2193 :value "docker run \"genenetwork2:latest\" python --version" :post-blank 1 :post-affiliated 2141 :mode nil :granularity nil :parent #181)))) (headline (:raw-value "Pushing to DockerHub" :begin 2194 :end 2817 :pre-blank 1 :contents-begin 2218 :contents-end 2817 :robust-begin 2220 :robust-end 2815 :level 1 :priority nil :tags nil :todo-keyword nil :todo-type nil :post-blank 0 :footnote-section-p nil :archivedp nil :commentedp nil :post-affiliated 2194 :title (#("Pushing to DockerHub" 0 20 (:parent #179))) :mode nil :granularity nil :parent #172) (section (:begin 2218 :end 2817 :contents-begin 2218 :contents-end 2817 :robust-begin 2218 :robust-end 2815 :post-blank 0 :post-affiliated 2218 :mode section :granularity nil :parent #179) (paragraph (:begin 2218 :end 2325 :contents-begin 2218 :contents-end 2324 :post-blank 1 :post-affiliated 2218 :mode planning :granularity nil :parent #182) #("We use DockerHub to store the docker images from which we use on our\nCI environment using Github Actions.\n" 0 106 (:parent #185))) (paragraph (:begin 2325 :end 2447 :contents-begin 2325 :contents-end 2446 :post-blank 1 :post-affiliated 2325 :mode nil :granularity nil :parent #182) #("To push to dockerhub, first get the image name by running " 0 58 (:parent #186)) (verbatim (:begin 2383 :end 2398 :post-blank 0 :value "docker\nimages" :parent #186)) #(". Push to dockerhub using a command similar to:\n" 0 48 (:parent #186))) (fixed-width (:begin 2447 :end 2494 :value "docker push bonfacekilz/genenetwork2:latest" :post-blank 2 :post-affiliated 2447 :mode nil :granularity nil :parent #182)) (paragraph (:begin 2494 :end 2537 :contents-begin 2494 :contents-end 2536 :post-blank 1 :post-affiliated 2494 :mode nil :granularity nil :parent #182) #("Right now, we have 2 images on DockerHub:\n" 0 42 (:parent #188))) (plain-list (:type unordered :begin 2537 :end 2817 :contents-begin 2537 :contents-end 2817 :structure ((2537 0 "- " nil nil nil 2701) (2701 0 "- " nil nil nil 2817)) :post-blank 0 :post-affiliated 2537 :mode nil :granularity nil :parent #182) (item (:bullet "- " :begin 2537 :end 2701 :contents-begin 2539 :contents-end 2701 :checkbox nil :counter nil :structure ((2537 0 "- " nil nil nil 2701) (2701 0 "- " nil nil nil 2817)) :pre-blank 0 :post-blank 0 :post-affiliated 2537 :tag nil :mode item :granularity nil :parent #189) (paragraph (:begin 2539 :end 2701 :contents-begin 2539 :contents-end 2701 :post-blank 0 :post-affiliated 2539 :mode nil :granularity nil :parent #192) (link (:type "https" :path "//hub.docker.com/repository/docker/bonfacekilz/python2-genenetwork2" :format plain :raw-link "https://hub.docker.com/repository/docker/bonfacekilz/python2-genenetwork2" :application nil :search-option nil :begin 2539 :end 2612 :contents-begin nil :contents-end nil :post-blank 0 :parent #195)) #(":\n Contains the python2 version of gn2. Don't use this. Please use the\n python3 image!\n" 0 89 (:parent #195)))) (item (:bullet "- " :begin 2701 :end 2817 :contents-begin 2703 :contents-end 2817 :checkbox nil :counter nil :structure ((2537 0 "- " nil nil nil 2701) (2701 0 "- " nil nil nil 2817)) :pre-blank 0 :post-blank 0 :post-affiliated 2701 :tag nil :mode item :granularity nil :parent #189) (paragraph (:begin 2703 :end 2817 :contents-begin 2703 :contents-end 2817 :post-blank 0 :post-affiliated 2703 :mode nil :granularity nil :parent #193) (link (:type "https" :path "//hub.docker.com/repository/docker/bonfacekilz/python3-genenetwork2" :format plain :raw-link "https://hub.docker.com/repository/docker/bonfacekilz/python3-genenetwork2" :application nil :search-option nil :begin 2703 :end 2776 :contents-begin nil :contents-end nil :post-blank 0 :parent #196)) #(":\n Contains the python3 version of gn2.\n" 0 41 (:parent #196))))))))) #102)) #78)) #46 (item (:bullet "- " :begin 147 :end 209 :contents-begin 149 :contents-end 209 :checkbox nil :counter nil :structure ((113 0 "- " nil nil nil 147) (147 0 "- " nil nil nil 209) (209 0 "- " nil nil nil 259)) :pre-blank 0 :post-blank 0 :post-affiliated 147 :tag nil :mode item :granularity nil :parent #78) (paragraph (:begin 149 :end 209 :contents-begin 149 :contents-end 209 :post-blank 0 :post-affiliated 149 :mode nil :granularity nil :parent #82) (link (:type "custom-id" :path "creating-the-docker-images" :format bracket :raw-link "#creating-the-docker-images" :application nil :search-option nil :begin 149 :end 208 :contents-begin 180 :contents-end 206 :post-blank 0 :parent #85) #("Creating the Docker Images" 0 26 (:parent #88))) #("\n" 0 1 (:parent #85)))) (item (:bullet "- " :begin 209 :end 259 :contents-begin 211 :contents-end 259 :checkbox nil :counter nil :structure ((113 0 "- " nil nil nil 147) (147 0 "- " nil nil nil 209) (209 0 "- " nil nil nil 259)) :pre-blank 0 :post-blank 0 :post-affiliated 209 :tag nil :mode item :granularity nil :parent #78) (paragraph (:begin 211 :end 259 :contents-begin 211 :contents-end 259 :post-blank 0 :post-affiliated 211 :mode nil :granularity nil :parent #83) (link (:type "custom-id" :path "pushing-to-dockerhub" :format bracket :raw-link "#pushing-to-dockerhub" :application nil :search-option nil :begin 211 :end 258 :contents-begin 236 :contents-end 256 :post-blank 0 :parent #86) #("Pushing to DockerHub" 0 20 (:parent #89))) #("\n" 0 1 (:parent #86)))))) #26)) #0 #("\n" 0 1 (:parent #26)))) #("Introduction" 0 12 (:parent #0)))) mapconcat(#f(compiled-function (element) #) ((link (:type "custom-id" :path "introduction" :format bracket :raw-link "#introduction" :application nil :search-option nil :begin 115 :end 146 :contents-begin 132 :contents-end 144 :post-blank 0 :parent (paragraph (:begin 115 :end 147 :contents-begin 115 :contents-end 147 :post-blank 0 :post-affiliated 115 :mode nil :granularity nil :parent (item (:bullet "- " :begin 113 :end 147 :contents-begin 115 :contents-end 147 :checkbox nil :counter nil :structure ((113 0 "- " nil nil nil 147) (147 0 "- " nil nil nil 209) (209 0 "- " nil nil nil 259)) :pre-blank 0 :post-blank 0 :post-affiliated 113 :tag nil :mode item :granularity nil :parent (plain-list (:type unordered :begin 113 :end 259 :contents-begin 113 :contents-end 259 :structure ((113 0 "- " nil nil nil 147) (147 0 "- " nil nil nil 209) (209 0 "- " nil nil nil 259)) :post-blank 0 :post-affiliated 113 :mode planning :granularity nil :parent (section (:begin 113 :end 260 :contents-begin 113 :contents-end 259 :robust-begin 113 :robust-end 257 :post-blank 1 :post-affiliated 113 :mode section :granularity nil :parent (headline (:raw-value "Table of Contents" :begin 35 :end 260 :pre-blank 0 :contents-begin 113 :contents-end 259 :robust-begin 115 :robust-end 257 :level 1 :priority nil :tags ("TOC") :todo-keyword nil :todo-type nil :post-blank 1 :footnote-section-p nil :archivedp nil :commentedp nil :post-affiliated 35 :title (#("Table of Contents" 0 17 (:parent #127))) :mode nil :granularity nil :parent (org-data (:begin 1 :contents-begin 1 :contents-end 2817 :end 2817 :robust-begin 3 :robust-end 2815 :post-blank 0 :post-affiliated 1 :path nil :mode org-data :CATEGORY nil :granularity nil) (section (:begin 1 :end 35 :contents-begin 1 :contents-end 34 :robust-begin 1 :robust-end 32 :post-blank 1 :post-affiliated 1 :mode first-section :granularity nil :parent #173) (keyword (:key "TITLE" :value "Genenetwork2 Dockerized" :begin 1 :end 34 :post-blank 0 :post-affiliated 1 :mode top-comment :granularity nil :parent #176))) #127 (headline (:raw-value "Introduction" :begin 260 :end 926 :pre-blank 1 :contents-begin 276 :contents-end 925 :robust-begin 278 :robust-end 923 :level 1 :priority nil :tags nil :todo-keyword nil :todo-type nil :post-blank 1 :footnote-section-p nil :archivedp nil :commentedp nil :post-affiliated 260 :title (#("Introduction" 0 12 (:parent #178))) :mode nil :granularity nil :parent #173) (section (:begin 276 :end 926 :contents-begin 276 :contents-end 925 :robust-begin 276 :robust-end 923 :post-blank 1 :post-affiliated 276 :mode section :granularity nil :parent #178) (paragraph (:begin 276 :end 600 :contents-begin 276 :contents-end 599 :post-blank 1 :post-affiliated 276 :mode planning :granularity nil :parent #181) #("The CI(Continuous Integration) system for Genenetwork2 uses " 0 60 (:parent #184)) (link (:type "https" :path "//github.com/features/actions" :format bracket :raw-link "https://github.com/features/actions" :application nil :search-option nil :begin 336 :end 391 :contents-begin 375 :contents-end 389 :post-blank 0 :parent #184) #("Github\nActions" 0 14 (:parent #188))) #(". As such, it's important to have a way to run tests using\nfacilities provided by GUIX in a reproducible way. This project\nleverages GUIX to generate a docker container from which the unittests\nare ran from.\n" 0 208 (:parent #184))) (paragraph (:begin 600 :end 830 :contents-begin 600 :contents-end 829 :post-blank 1 :post-affiliated 600 :mode nil :granularity nil :parent #181) #("Find instructions on how to set docker up inside GUIX " 0 54 (:parent #185)) (link (:type "https" :path "//github.com/pjotrp/guix-notes/blob/master/CONTAINERS.org#run-docker" :format bracket :raw-link "https://github.com/pjotrp/guix-notes/blob/master/CONTAINERS.org#run-docker" :application nil :search-option nil :begin 654 :end 738 :contents-begin 732 :contents-end 736 :post-blank 0 :parent #185) #("here" 0 4 (:parent #189))) #(". This\ndocument will not get into that. It's assumed that you have a working\ndocker setup.\n" 0 91 (:parent #185))) (paragraph (:begin 830 :end 925 :contents-begin 830 :contents-end 925 :post-blank 0 :post-affiliated 830 :mode nil :granularity nil :parent #181) #("The rest of this document outlines how the docker container used in\nthe CI builds was created.\n" 0 95 (:parent #186))))) (headline (:raw-value "Creating the Docker Images" :begin 926 :end 2194 :pre-blank 1 :contents-begin 956 :contents-end 2193 :robust-begin 958 :robust-end 2191 :level 1 :priority nil :tags nil :todo-keyword nil :todo-type nil :post-blank 1 :footnote-section-p nil :archivedp nil :commentedp nil :post-affiliated 926 :title (#("Creating the Docker Images" 0 26 (:parent #179))) :mode nil :granularity nil :parent #173) (section (:begin 956 :end 2194 :contents-begin 956 :contents-end 2193 :robust-begin 956 :robust-end 2191 :post-blank 1 :post-affiliated 956 :mode section :granularity nil :parent #179) (paragraph (:begin 956 :end 1071 :contents-begin 956 :contents-end 1070 :post-blank 1 :post-affiliated 956 :mode planning :granularity nil :parent #182) #("The general idea is that GUIX is used to generate a set of binaries,\nwhich will be added to a base mariaDB image.\n" 0 114 (:parent #185))) (paragraph (:begin 1071 :end 1117 :contents-begin 1071 :contents-end 1116 :post-blank 1 :post-affiliated 1071 :mode nil :granularity nil :parent #182) #("First create the gn2 tar archive by running:\n" 0 45 (:parent #186))) (src-block (:language "sh" :switches nil :parameters nil :begin 1117 :end 1343 :number-lines nil :preserve-indent nil :retain-labels t :use-labels t :label-fmt nil :value "env GUIX_PACKAGE_PATH=\"/home/bonface/projects/guix-bioinformatics:/home/bonface/projects/guix-past/modules\" \\\n ./pre-inst-env guix pack --no-grafts\\\n -S /gn2-profile=/ \\\n screen genenetwork2\n" :post-blank 1 :post-affiliated 1117 :mode nil :granularity nil :parent #182)) (paragraph (:begin 1343 :end 1387 :contents-begin 1343 :contents-end 1386 :post-blank 1 :post-affiliated 1343 :mode nil :granularity nil :parent #182) #("The output will look something similar to:\n" 0 43 (:parent #188))) (fixed-width (:begin 1387 :end 1454 :value "/gnu/store/x3m77vwaqcwba24p5s4lrb7w2ii16lj9-tarball-pack.tar.gz" :post-blank 2 :post-affiliated 1387 :mode nil :granularity nil :parent #182)) (paragraph (:begin 1454 :end 1640 :contents-begin 1454 :contents-end 1639 :post-blank 1 :post-affiliated 1454 :mode nil :granularity nil :parent #182) #("Now create a folder from which will host the following dockerfile. You\ncan name this file Dockerfile. Note that mariadb is the base image\nsince it already has mariadb installed for us.\n" 0 185 (:parent #190))) (src-block (:language "conf" :switches nil :parameters nil :begin 1640 :end 1847 :number-lines nil :preserve-indent nil :retain-labels t :use-labels t :label-fmt nil :value "FROM mariadb:latest\n\nCOPY ./gn2.tar.gz /tmp/gn2.tar.gz\nRUN tar -xzf /tmp/gn2.tar.gz -C / && rm -f /tmp/gn2.tar.gz && \\\n mkdir -p /usr/local/mysql /genotype_files/genotype/json\n" :post-blank 1 :post-affiliated 1640 :mode nil :granularity nil :parent #182)) (paragraph (:begin 1847 :end 1895 :contents-begin 1847 :contents-end 1894 :post-blank 1 :post-affiliated 1847 :mode nil :granularity nil :parent #182) #("Build the image(Note the fullstop at the end):\n" 0 47 (:parent #192))) (fixed-width (:begin 1895 :end 1955 :value "sudo docker build -t genenetwork2:latest -f Dockerfile ." :post-blank 2 :post-affiliated 1895 :mode nil :granularity nil :parent #182)) (paragraph (:begin 1955 :end 2009 :contents-begin 1955 :contents-end 2008 :post-blank 1 :post-affiliated 1955 :mode nil :granularity nil :parent #182) #("To load the image interactively you've just created:\n" 0 53 (:parent #194))) (fixed-width (:begin 2009 :end 2054 :value "docker run -ti \"genenetwork2:latest\" bash" :post-blank 2 :post-affiliated 2009 :mode nil :granularity nil :parent #182)) (paragraph (:begin 2054 :end 2141 :contents-begin 2054 :contents-end 2140 :post-blank 1 :post-affiliated 2054 :mode nil :granularity nil :parent #182) #("Assuming you have a docker instance running, you could always run\ncommands in it e.g:\n" 0 86 (:parent #196))) (fixed-width (:begin 2141 :end 2193 :value "docker run \"genenetwork2:latest\" python --version" :post-blank 1 :post-affiliated 2141 :mode nil :granularity nil :parent #182)))) (headline (:raw-value "Pushing to DockerHub" :begin 2194 :end 2817 :pre-blank 1 :contents-begin 2218 :contents-end 2817 :robust-begin 2220 :robust-end 2815 :level 1 :priority nil :tags nil :todo-keyword nil :todo-type nil :post-blank 0 :footnote-section-p nil :archivedp nil :commentedp nil :post-affiliated 2194 :title (#("Pushing to DockerHub" 0 20 (:parent #180))) :mode nil :granularity nil :parent #173) (section (:begin 2218 :end 2817 :contents-begin 2218 :contents-end 2817 :robust-begin 2218 :robust-end 2815 :post-blank 0 :post-affiliated 2218 :mode section :granularity nil :parent #180) (paragraph (:begin 2218 :end 2325 :contents-begin 2218 :contents-end 2324 :post-blank 1 :post-affiliated 2218 :mode planning :granularity nil :parent #183) #("We use DockerHub to store the docker images from which we use on our\nCI environment using Github Actions.\n" 0 106 (:parent #186))) (paragraph (:begin 2325 :end 2447 :contents-begin 2325 :contents-end 2446 :post-blank 1 :post-affiliated 2325 :mode nil :granularity nil :parent #183) #("To push to dockerhub, first get the image name by running " 0 58 (:parent #187)) (verbatim (:begin 2383 :end 2398 :post-blank 0 :value "docker\nimages" :parent #187)) #(". Push to dockerhub using a command similar to:\n" 0 48 (:parent #187))) (fixed-width (:begin 2447 :end 2494 :value "docker push bonfacekilz/genenetwork2:latest" :post-blank 2 :post-affiliated 2447 :mode nil :granularity nil :parent #183)) (paragraph (:begin 2494 :end 2537 :contents-begin 2494 :contents-end 2536 :post-blank 1 :post-affiliated 2494 :mode nil :granularity nil :parent #183) #("Right now, we have 2 images on DockerHub:\n" 0 42 (:parent #189))) (plain-list (:type unordered :begin 2537 :end 2817 :contents-begin 2537 :contents-end 2817 :structure ((2537 0 "- " nil nil nil 2701) (2701 0 "- " nil nil nil 2817)) :post-blank 0 :post-affiliated 2537 :mode nil :granularity nil :parent #183) (item (:bullet "- " :begin 2537 :end 2701 :contents-begin 2539 :contents-end 2701 :checkbox nil :counter nil :structure ((2537 0 "- " nil nil nil 2701) (2701 0 "- " nil nil nil 2817)) :pre-blank 0 :post-blank 0 :post-affiliated 2537 :tag nil :mode item :granularity nil :parent #190) (paragraph (:begin 2539 :end 2701 :contents-begin 2539 :contents-end 2701 :post-blank 0 :post-affiliated 2539 :mode nil :granularity nil :parent #193) (link (:type "https" :path "//hub.docker.com/repository/docker/bonfacekilz/python2-genenetwork2" :format plain :raw-link "https://hub.docker.com/repository/docker/bonfacekilz/python2-genenetwork2" :application nil :search-option nil :begin 2539 :end 2612 :contents-begin nil :contents-end nil :post-blank 0 :parent #196)) #(":\n Contains the python2 version of gn2. Don't use this. Please use the\n python3 image!\n" 0 89 (:parent #196)))) (item (:bullet "- " :begin 2701 :end 2817 :contents-begin 2703 :contents-end 2817 :checkbox nil :counter nil :structure ((2537 0 "- " nil nil nil 2701) (2701 0 "- " nil nil nil 2817)) :pre-blank 0 :post-blank 0 :post-affiliated 2701 :tag nil :mode item :granularity nil :parent #190) (paragraph (:begin 2703 :end 2817 :contents-begin 2703 :contents-end 2817 :post-blank 0 :post-affiliated 2703 :mode nil :granularity nil :parent #194) (link (:type "https" :path "//hub.docker.com/repository/docker/bonfacekilz/python3-genenetwork2" :format plain :raw-link "https://hub.docker.com/repository/docker/bonfacekilz/python3-genenetwork2" :application nil :search-option nil :begin 2703 :end 2776 :contents-begin nil :contents-end nil :post-blank 0 :parent #197)) #(":\n Contains the python3 version of gn2.\n" 0 41 (:parent #197))))))))) #103)) #79)) #47 (item (:bullet "- " :begin 147 :end 209 :contents-begin 149 :contents-end 209 :checkbox nil :counter nil :structure ((113 0 "- " nil nil nil 147) (147 0 "- " nil nil nil 209) (209 0 "- " nil nil nil 259)) :pre-blank 0 :post-blank 0 :post-affiliated 147 :tag nil :mode item :granularity nil :parent #79) (paragraph (:begin 149 :end 209 :contents-begin 149 :contents-end 209 :post-blank 0 :post-affiliated 149 :mode nil :granularity nil :parent #83) (link (:type "custom-id" :path "creating-the-docker-images" :format bracket :raw-link "#creating-the-docker-images" :application nil :search-option nil :begin 149 :end 208 :contents-begin 180 :contents-end 206 :post-blank 0 :parent #86) #("Creating the Docker Images" 0 26 (:parent #89))) #("\n" 0 1 (:parent #86)))) (item (:bullet "- " :begin 209 :end 259 :contents-begin 211 :contents-end 259 :checkbox nil :counter nil :structure ((113 0 "- " nil nil nil 147) (147 0 "- " nil nil nil 209) (209 0 "- " nil nil nil 259)) :pre-blank 0 :post-blank 0 :post-affiliated 209 :tag nil :mode item :granularity nil :parent #79) (paragraph (:begin 211 :end 259 :contents-begin 211 :contents-end 259 :post-blank 0 :post-affiliated 211 :mode nil :granularity nil :parent #84) (link (:type "custom-id" :path "pushing-to-dockerhub" :format bracket :raw-link "#pushing-to-dockerhub" :application nil :search-option nil :begin 211 :end 258 :contents-begin 236 :contents-end 256 :post-blank 0 :parent #87) #("Pushing to DockerHub" 0 20 (:parent #90))) #("\n" 0 1 (:parent #87)))))) #27)) . #0)) #("Introduction" 0 12 (:parent #1))) #("\n" 0 1 (:parent (paragraph (:begin 115 :end 147 :contents-begin 115 :contents-end 147 :post-blank 0 :post-affiliated 115 :mode nil :granularity nil :parent (item (:bullet "- " :begin 113 :end 147 :contents-begin 115 :contents-end 147 :checkbox nil :counter nil :structure ((113 0 "- " nil nil nil 147) (147 0 "- " nil nil nil 209) (209 0 "- " nil nil nil 259)) :pre-blank 0 :post-blank 0 :post-affiliated 113 :tag nil :mode item :granularity nil :parent (plain-list (:type unordered :begin 113 :end 259 :contents-begin 113 :contents-end 259 :structure ((113 0 "- " nil nil nil 147) (147 0 "- " nil nil nil 209) (209 0 "- " nil nil nil 259)) :post-blank 0 :post-affiliated 113 :mode planning :granularity nil :parent (section (:begin 113 :end 260 :contents-begin 113 :contents-end 259 :robust-begin 113 :robust-end 257 :post-blank 1 :post-affiliated 113 :mode section :granularity nil :parent (headline (:raw-value "Table of Contents" :begin 35 :end 260 :pre-blank 0 :contents-begin 113 :contents-end 259 :robust-begin 115 :robust-end 257 :level 1 :priority nil :tags ("TOC") :todo-keyword nil :todo-type nil :post-blank 1 :footnote-section-p nil :archivedp nil :commentedp nil :post-affiliated 35 :title (#("Table of Contents" 0 17 (:parent #105))) :mode nil :granularity nil :parent (org-data (:begin 1 :contents-begin 1 :contents-end 2817 :end 2817 :robust-begin 3 :robust-end 2815 :post-blank 0 :post-affiliated 1 :path nil :mode org-data :CATEGORY nil :granularity nil) (section (:begin 1 :end 35 :contents-begin 1 :contents-end 34 :robust-begin 1 :robust-end 32 :post-blank 1 :post-affiliated 1 :mode first-section :granularity nil :parent #151) (keyword (:key "TITLE" :value "Genenetwork2 Dockerized" :begin 1 :end 34 :post-blank 0 :post-affiliated 1 :mode top-comment :granularity nil :parent #154))) #105 (headline (:raw-value "Introduction" :begin 260 :end 926 :pre-blank 1 :contents-begin 276 :contents-end 925 :robust-begin 278 :robust-end 923 :level 1 :priority nil :tags nil :todo-keyword nil :todo-type nil :post-blank 1 :footnote-section-p nil :archivedp nil :commentedp nil :post-affiliated 260 :title (#("Introduction" 0 12 (:parent #156))) :mode nil :granularity nil :parent #151) (section (:begin 276 :end 926 :contents-begin 276 :contents-end 925 :robust-begin 276 :robust-end 923 :post-blank 1 :post-affiliated 276 :mode section :granularity nil :parent #156) (paragraph (:begin 276 :end 600 :contents-begin 276 :contents-end 599 :post-blank 1 :post-affiliated 276 :mode planning :granularity nil :parent #159) #("The CI(Continuous Integration) system for Genenetwork2 uses " 0 60 (:parent #162)) (link (:type "https" :path "//github.com/features/actions" :format bracket :raw-link "https://github.com/features/actions" :application nil :search-option nil :begin 336 :end 391 :contents-begin 375 :contents-end 389 :post-blank 0 :parent #162) #("Github\nActions" 0 14 (:parent #166))) #(". As such, it's important to have a way to run tests using\nfacilities provided by GUIX in a reproducible way. This project\nleverages GUIX to generate a docker container from which the unittests\nare ran from.\n" 0 208 (:parent #162))) (paragraph (:begin 600 :end 830 :contents-begin 600 :contents-end 829 :post-blank 1 :post-affiliated 600 :mode nil :granularity nil :parent #159) #("Find instructions on how to set docker up inside GUIX " 0 54 (:parent #163)) (link (:type "https" :path "//github.com/pjotrp/guix-notes/blob/master/CONTAINERS.org#run-docker" :format bracket :raw-link "https://github.com/pjotrp/guix-notes/blob/master/CONTAINERS.org#run-docker" :application nil :search-option nil :begin 654 :end 738 :contents-begin 732 :contents-end 736 :post-blank 0 :parent #163) #("here" 0 4 (:parent #167))) #(". This\ndocument will not get into that. It's assumed that you have a working\ndocker setup.\n" 0 91 (:parent #163))) (paragraph (:begin 830 :end 925 :contents-begin 830 :contents-end 925 :post-blank 0 :post-affiliated 830 :mode nil :granularity nil :parent #159) #("The rest of this document outlines how the docker container used in\nthe CI builds was created.\n" 0 95 (:parent #164))))) (headline (:raw-value "Creating the Docker Images" :begin 926 :end 2194 :pre-blank 1 :contents-begin 956 :contents-end 2193 :robust-begin 958 :robust-end 2191 :level 1 :priority nil :tags nil :todo-keyword nil :todo-type nil :post-blank 1 :footnote-section-p nil :archivedp nil :commentedp nil :post-affiliated 926 :title (#("Creating the Docker Images" 0 26 (:parent #157))) :mode nil :granularity nil :parent #151) (section (:begin 956 :end 2194 :contents-begin 956 :contents-end 2193 :robust-begin 956 :robust-end 2191 :post-blank 1 :post-affiliated 956 :mode section :granularity nil :parent #157) (paragraph (:begin 956 :end 1071 :contents-begin 956 :contents-end 1070 :post-blank 1 :post-affiliated 956 :mode planning :granularity nil :parent #160) #("The general idea is that GUIX is used to generate a set of binaries,\nwhich will be added to a base mariaDB image.\n" 0 114 (:parent #163))) (paragraph (:begin 1071 :end 1117 :contents-begin 1071 :contents-end 1116 :post-blank 1 :post-affiliated 1071 :mode nil :granularity nil :parent #160) #("First create the gn2 tar archive by running:\n" 0 45 (:parent #164))) (src-block (:language "sh" :switches nil :parameters nil :begin 1117 :end 1343 :number-lines nil :preserve-indent nil :retain-labels t :use-labels t :label-fmt nil :value "env GUIX_PACKAGE_PATH=\"/home/bonface/projects/guix-bioinformatics:/home/bonface/projects/guix-past/modules\" \\\n ./pre-inst-env guix pack --no-grafts\\\n -S /gn2-profile=/ \\\n screen genenetwork2\n" :post-blank 1 :post-affiliated 1117 :mode nil :granularity nil :parent #160)) (paragraph (:begin 1343 :end 1387 :contents-begin 1343 :contents-end 1386 :post-blank 1 :post-affiliated 1343 :mode nil :granularity nil :parent #160) #("The output will look something similar to:\n" 0 43 (:parent #166))) (fixed-width (:begin 1387 :end 1454 :value "/gnu/store/x3m77vwaqcwba24p5s4lrb7w2ii16lj9-tarball-pack.tar.gz" :post-blank 2 :post-affiliated 1387 :mode nil :granularity nil :parent #160)) (paragraph (:begin 1454 :end 1640 :contents-begin 1454 :contents-end 1639 :post-blank 1 :post-affiliated 1454 :mode nil :granularity nil :parent #160) #("Now create a folder from which will host the following dockerfile. You\ncan name this file Dockerfile. Note that mariadb is the base image\nsince it already has mariadb installed for us.\n" 0 185 (:parent #168))) (src-block (:language "conf" :switches nil :parameters nil :begin 1640 :end 1847 :number-lines nil :preserve-indent nil :retain-labels t :use-labels t :label-fmt nil :value "FROM mariadb:latest\n\nCOPY ./gn2.tar.gz /tmp/gn2.tar.gz\nRUN tar -xzf /tmp/gn2.tar.gz -C / && rm -f /tmp/gn2.tar.gz && \\\n mkdir -p /usr/local/mysql /genotype_files/genotype/json\n" :post-blank 1 :post-affiliated 1640 :mode nil :granularity nil :parent #160)) (paragraph (:begin 1847 :end 1895 :contents-begin 1847 :contents-end 1894 :post-blank 1 :post-affiliated 1847 :mode nil :granularity nil :parent #160) #("Build the image(Note the fullstop at the end):\n" 0 47 (:parent #170))) (fixed-width (:begin 1895 :end 1955 :value "sudo docker build -t genenetwork2:latest -f Dockerfile ." :post-blank 2 :post-affiliated 1895 :mode nil :granularity nil :parent #160)) (paragraph (:begin 1955 :end 2009 :contents-begin 1955 :contents-end 2008 :post-blank 1 :post-affiliated 1955 :mode nil :granularity nil :parent #160) #("To load the image interactively you've just created:\n" 0 53 (:parent #172))) (fixed-width (:begin 2009 :end 2054 :value "docker run -ti \"genenetwork2:latest\" bash" :post-blank 2 :post-affiliated 2009 :mode nil :granularity nil :parent #160)) (paragraph (:begin 2054 :end 2141 :contents-begin 2054 :contents-end 2140 :post-blank 1 :post-affiliated 2054 :mode nil :granularity nil :parent #160) #("Assuming you have a docker instance running, you could always run\ncommands in it e.g:\n" 0 86 (:parent #174))) (fixed-width (:begin 2141 :end 2193 :value "docker run \"genenetwork2:latest\" python --version" :post-blank 1 :post-affiliated 2141 :mode nil :granularity nil :parent #160)))) (headline (:raw-value "Pushing to DockerHub" :begin 2194 :end 2817 :pre-blank 1 :contents-begin 2218 :contents-end 2817 :robust-begin 2220 :robust-end 2815 :level 1 :priority nil :tags nil :todo-keyword nil :todo-type nil :post-blank 0 :footnote-section-p nil :archivedp nil :commentedp nil :post-affiliated 2194 :title (#("Pushing to DockerHub" 0 20 (:parent #158))) :mode nil :granularity nil :parent #151) (section (:begin 2218 :end 2817 :contents-begin 2218 :contents-end 2817 :robust-begin 2218 :robust-end 2815 :post-blank 0 :post-affiliated 2218 :mode section :granularity nil :parent #158) (paragraph (:begin 2218 :end 2325 :contents-begin 2218 :contents-end 2324 :post-blank 1 :post-affiliated 2218 :mode planning :granularity nil :parent #161) #("We use DockerHub to store the docker images from which we use on our\nCI environment using Github Actions.\n" 0 106 (:parent #164))) (paragraph (:begin 2325 :end 2447 :contents-begin 2325 :contents-end 2446 :post-blank 1 :post-affiliated 2325 :mode nil :granularity nil :parent #161) #("To push to dockerhub, first get the image name by running " 0 58 (:parent #165)) (verbatim (:begin 2383 :end 2398 :post-blank 0 :value "docker\nimages" :parent #165)) #(". Push to dockerhub using a command similar to:\n" 0 48 (:parent #165))) (fixed-width (:begin 2447 :end 2494 :value "docker push bonfacekilz/genenetwork2:latest" :post-blank 2 :post-affiliated 2447 :mode nil :granularity nil :parent #161)) (paragraph (:begin 2494 :end 2537 :contents-begin 2494 :contents-end 2536 :post-blank 1 :post-affiliated 2494 :mode nil :granularity nil :parent #161) #("Right now, we have 2 images on DockerHub:\n" 0 42 (:parent #167))) (plain-list (:type unordered :begin 2537 :end 2817 :contents-begin 2537 :contents-end 2817 :structure ((2537 0 "- " nil nil nil 2701) (2701 0 "- " nil nil nil 2817)) :post-blank 0 :post-affiliated 2537 :mode nil :granularity nil :parent #161) (item (:bullet "- " :begin 2537 :end 2701 :contents-begin 2539 :contents-end 2701 :checkbox nil :counter nil :structure ((2537 0 "- " nil nil nil 2701) (2701 0 "- " nil nil nil 2817)) :pre-blank 0 :post-blank 0 :post-affiliated 2537 :tag nil :mode item :granularity nil :parent #168) (paragraph (:begin 2539 :end 2701 :contents-begin 2539 :contents-end 2701 :post-blank 0 :post-affiliated 2539 :mode nil :granularity nil :parent #171) (link (:type "https" :path "//hub.docker.com/repository/docker/bonfacekilz/python2-genenetwork2" :format plain :raw-link "https://hub.docker.com/repository/docker/bonfacekilz/python2-genenetwork2" :application nil :search-option nil :begin 2539 :end 2612 :contents-begin nil :contents-end nil :post-blank 0 :parent #174)) #(":\n Contains the python2 version of gn2. Don't use this. Please use the\n python3 image!\n" 0 89 (:parent #174)))) (item (:bullet "- " :begin 2701 :end 2817 :contents-begin 2703 :contents-end 2817 :checkbox nil :counter nil :structure ((2537 0 "- " nil nil nil 2701) (2701 0 "- " nil nil nil 2817)) :pre-blank 0 :post-blank 0 :post-affiliated 2701 :tag nil :mode item :granularity nil :parent #168) (paragraph (:begin 2703 :end 2817 :contents-begin 2703 :contents-end 2817 :post-blank 0 :post-affiliated 2703 :mode nil :granularity nil :parent #172) (link (:type "https" :path "//hub.docker.com/repository/docker/bonfacekilz/python3-genenetwork2" :format plain :raw-link "https://hub.docker.com/repository/docker/bonfacekilz/python3-genenetwork2" :application nil :search-option nil :begin 2703 :end 2776 :contents-begin nil :contents-end nil :post-blank 0 :parent #175)) #(":\n Contains the python3 version of gn2.\n" 0 41 (:parent #175))))))))) #81)) #57)) #25 (item (:bullet "- " :begin 147 :end 209 :contents-begin 149 :contents-end 209 :checkbox nil :counter nil :structure ((113 0 "- " nil nil nil 147) (147 0 "- " nil nil nil 209) (209 0 "- " nil nil nil 259)) :pre-blank 0 :post-blank 0 :post-affiliated 147 :tag nil :mode item :granularity nil :parent #57) (paragraph (:begin 149 :end 209 :contents-begin 149 :contents-end 209 :post-blank 0 :post-affiliated 149 :mode nil :granularity nil :parent #61) (link (:type "custom-id" :path "creating-the-docker-images" :format bracket :raw-link "#creating-the-docker-images" :application nil :search-option nil :begin 149 :end 208 :contents-begin 180 :contents-end 206 :post-blank 0 :parent #64) #("Creating the Docker Images" 0 26 (:parent #67))) #("\n" 0 1 (:parent #64)))) (item (:bullet "- " :begin 209 :end 259 :contents-begin 211 :contents-end 259 :checkbox nil :counter nil :structure ((113 0 "- " nil nil nil 147) (147 0 "- " nil nil nil 209) (209 0 "- " nil nil nil 259)) :pre-blank 0 :post-blank 0 :post-affiliated 209 :tag nil :mode item :granularity nil :parent #57) (paragraph (:begin 211 :end 259 :contents-begin 211 :contents-end 259 :post-blank 0 :post-affiliated 211 :mode nil :granularity nil :parent #62) (link (:type "custom-id" :path "pushing-to-dockerhub" :format bracket :raw-link "#pushing-to-dockerhub" :application nil :search-option nil :begin 211 :end 258 :contents-begin 236 :contents-end 256 :post-blank 0 :parent #65) #("Pushing to DockerHub" 0 20 (:parent #68))) #("\n" 0 1 (:parent #65)))))) #5)) . #0)))) "") org-export-data((paragraph (:begin 115 :end 147 :contents-begin 115 :contents-end 147 :post-blank 0 :post-affiliated 115 :mode nil :granularity nil :parent (item (:bullet "- " :begin 113 :end 147 :contents-begin 115 :contents-end 147 :checkbox nil :counter nil :structure ((113 0 "- " nil nil nil 147) (147 0 "- " nil nil nil 209) (209 0 "- " nil nil nil 259)) :pre-blank 0 :post-blank 0 :post-affiliated 113 :tag nil :mode item :granularity nil :parent (plain-list (:type unordered :begin 113 :end 259 :contents-begin 113 :contents-end 259 :structure ((113 0 "- " nil nil nil 147) (147 0 "- " nil nil nil 209) (209 0 "- " nil nil nil 259)) :post-blank 0 :post-affiliated 113 :mode planning :granularity nil :parent (section (:begin 113 :end 260 :contents-begin 113 :contents-end 259 :robust-begin 113 :robust-end 257 :post-blank 1 :post-affiliated 113 :mode section :granularity nil :parent (headline (:raw-value "Table of Contents" :begin 35 :end 260 :pre-blank 0 :contents-begin 113 :contents-end 259 :robust-begin 115 :robust-end 257 :level 1 :priority nil :tags ("TOC") :todo-keyword nil :todo-type nil :post-blank 1 :footnote-section-p nil :archivedp nil :commentedp nil :post-affiliated 35 :title (#("Table of Contents" 0 17 (:parent #100))) :mode nil :granularity nil :parent (org-data (:begin 1 :contents-begin 1 :contents-end 2817 :end 2817 :robust-begin 3 :robust-end 2815 :post-blank 0 :post-affiliated 1 :path nil :mode org-data :CATEGORY nil :granularity nil) (section (:begin 1 :end 35 :contents-begin 1 :contents-end 34 :robust-begin 1 :robust-end 32 :post-blank 1 :post-affiliated 1 :mode first-section :granularity nil :parent #146) (keyword (:key "TITLE" :value "Genenetwork2 Dockerized" :begin 1 :end 34 :post-blank 0 :post-affiliated 1 :mode top-comment :granularity nil :parent #149))) #100 (headline (:raw-value "Introduction" :begin 260 :end 926 :pre-blank 1 :contents-begin 276 :contents-end 925 :robust-begin 278 :robust-end 923 :level 1 :priority nil :tags nil :todo-keyword nil :todo-type nil :post-blank 1 :footnote-section-p nil :archivedp nil :commentedp nil :post-affiliated 260 :title (#("Introduction" 0 12 (:parent #151))) :mode nil :granularity nil :parent #146) (section (:begin 276 :end 926 :contents-begin 276 :contents-end 925 :robust-begin 276 :robust-end 923 :post-blank 1 :post-affiliated 276 :mode section :granularity nil :parent #151) (paragraph (:begin 276 :end 600 :contents-begin 276 :contents-end 599 :post-blank 1 :post-affiliated 276 :mode planning :granularity nil :parent #154) #("The CI(Continuous Integration) system for Genenetwork2 uses " 0 60 (:parent #157)) (link (:type "https" :path "//github.com/features/actions" :format bracket :raw-link "https://github.com/features/actions" :application nil :search-option nil :begin 336 :end 391 :contents-begin 375 :contents-end 389 :post-blank 0 :parent #157) #("Github\nActions" 0 14 (:parent #161))) #(". As such, it's important to have a way to run tests using\nfacilities provided by GUIX in a reproducible way. This project\nleverages GUIX to generate a docker container from which the unittests\nare ran from.\n" 0 208 (:parent #157))) (paragraph (:begin 600 :end 830 :contents-begin 600 :contents-end 829 :post-blank 1 :post-affiliated 600 :mode nil :granularity nil :parent #154) #("Find instructions on how to set docker up inside GUIX " 0 54 (:parent #158)) (link (:type "https" :path "//github.com/pjotrp/guix-notes/blob/master/CONTAINERS.org#run-docker" :format bracket :raw-link "https://github.com/pjotrp/guix-notes/blob/master/CONTAINERS.org#run-docker" :application nil :search-option nil :begin 654 :end 738 :contents-begin 732 :contents-end 736 :post-blank 0 :parent #158) #("here" 0 4 (:parent #162))) #(". This\ndocument will not get into that. It's assumed that you have a working\ndocker setup.\n" 0 91 (:parent #158))) (paragraph (:begin 830 :end 925 :contents-begin 830 :contents-end 925 :post-blank 0 :post-affiliated 830 :mode nil :granularity nil :parent #154) #("The rest of this document outlines how the docker container used in\nthe CI builds was created.\n" 0 95 (:parent #159))))) (headline (:raw-value "Creating the Docker Images" :begin 926 :end 2194 :pre-blank 1 :contents-begin 956 :contents-end 2193 :robust-begin 958 :robust-end 2191 :level 1 :priority nil :tags nil :todo-keyword nil :todo-type nil :post-blank 1 :footnote-section-p nil :archivedp nil :commentedp nil :post-affiliated 926 :title (#("Creating the Docker Images" 0 26 (:parent #152))) :mode nil :granularity nil :parent #146) (section (:begin 956 :end 2194 :contents-begin 956 :contents-end 2193 :robust-begin 956 :robust-end 2191 :post-blank 1 :post-affiliated 956 :mode section :granularity nil :parent #152) (paragraph (:begin 956 :end 1071 :contents-begin 956 :contents-end 1070 :post-blank 1 :post-affiliated 956 :mode planning :granularity nil :parent #155) #("The general idea is that GUIX is used to generate a set of binaries,\nwhich will be added to a base mariaDB image.\n" 0 114 (:parent #158))) (paragraph (:begin 1071 :end 1117 :contents-begin 1071 :contents-end 1116 :post-blank 1 :post-affiliated 1071 :mode nil :granularity nil :parent #155) #("First create the gn2 tar archive by running:\n" 0 45 (:parent #159))) (src-block (:language "sh" :switches nil :parameters nil :begin 1117 :end 1343 :number-lines nil :preserve-indent nil :retain-labels t :use-labels t :label-fmt nil :value "env GUIX_PACKAGE_PATH=\"/home/bonface/projects/guix-bioinformatics:/home/bonface/projects/guix-past/modules\" \\\n ./pre-inst-env guix pack --no-grafts\\\n -S /gn2-profile=/ \\\n screen genenetwork2\n" :post-blank 1 :post-affiliated 1117 :mode nil :granularity nil :parent #155)) (paragraph (:begin 1343 :end 1387 :contents-begin 1343 :contents-end 1386 :post-blank 1 :post-affiliated 1343 :mode nil :granularity nil :parent #155) #("The output will look something similar to:\n" 0 43 (:parent #161))) (fixed-width (:begin 1387 :end 1454 :value "/gnu/store/x3m77vwaqcwba24p5s4lrb7w2ii16lj9-tarball-pack.tar.gz" :post-blank 2 :post-affiliated 1387 :mode nil :granularity nil :parent #155)) (paragraph (:begin 1454 :end 1640 :contents-begin 1454 :contents-end 1639 :post-blank 1 :post-affiliated 1454 :mode nil :granularity nil :parent #155) #("Now create a folder from which will host the following dockerfile. You\ncan name this file Dockerfile. Note that mariadb is the base image\nsince it already has mariadb installed for us.\n" 0 185 (:parent #163))) (src-block (:language "conf" :switches nil :parameters nil :begin 1640 :end 1847 :number-lines nil :preserve-indent nil :retain-labels t :use-labels t :label-fmt nil :value "FROM mariadb:latest\n\nCOPY ./gn2.tar.gz /tmp/gn2.tar.gz\nRUN tar -xzf /tmp/gn2.tar.gz -C / && rm -f /tmp/gn2.tar.gz && \\\n mkdir -p /usr/local/mysql /genotype_files/genotype/json\n" :post-blank 1 :post-affiliated 1640 :mode nil :granularity nil :parent #155)) (paragraph (:begin 1847 :end 1895 :contents-begin 1847 :contents-end 1894 :post-blank 1 :post-affiliated 1847 :mode nil :granularity nil :parent #155) #("Build the image(Note the fullstop at the end):\n" 0 47 (:parent #165))) (fixed-width (:begin 1895 :end 1955 :value "sudo docker build -t genenetwork2:latest -f Dockerfile ." :post-blank 2 :post-affiliated 1895 :mode nil :granularity nil :parent #155)) (paragraph (:begin 1955 :end 2009 :contents-begin 1955 :contents-end 2008 :post-blank 1 :post-affiliated 1955 :mode nil :granularity nil :parent #155) #("To load the image interactively you've just created:\n" 0 53 (:parent #167))) (fixed-width (:begin 2009 :end 2054 :value "docker run -ti \"genenetwork2:latest\" bash" :post-blank 2 :post-affiliated 2009 :mode nil :granularity nil :parent #155)) (paragraph (:begin 2054 :end 2141 :contents-begin 2054 :contents-end 2140 :post-blank 1 :post-affiliated 2054 :mode nil :granularity nil :parent #155) #("Assuming you have a docker instance running, you could always run\ncommands in it e.g:\n" 0 86 (:parent #169))) (fixed-width (:begin 2141 :end 2193 :value "docker run \"genenetwork2:latest\" python --version" :post-blank 1 :post-affiliated 2141 :mode nil :granularity nil :parent #155)))) (headline (:raw-value "Pushing to DockerHub" :begin 2194 :end 2817 :pre-blank 1 :contents-begin 2218 :contents-end 2817 :robust-begin 2220 :robust-end 2815 :level 1 :priority nil :tags nil :todo-keyword nil :todo-type nil :post-blank 0 :footnote-section-p nil :archivedp nil :commentedp nil :post-affiliated 2194 :title (#("Pushing to DockerHub" 0 20 (:parent #153))) :mode nil :granularity nil :parent #146) (section (:begin 2218 :end 2817 :contents-begin 2218 :contents-end 2817 :robust-begin 2218 :robust-end 2815 :post-blank 0 :post-affiliated 2218 :mode section :granularity nil :parent #153) (paragraph (:begin 2218 :end 2325 :contents-begin 2218 :contents-end 2324 :post-blank 1 :post-affiliated 2218 :mode planning :granularity nil :parent #156) #("We use DockerHub to store the docker images from which we use on our\nCI environment using Github Actions.\n" 0 106 (:parent #159))) (paragraph (:begin 2325 :end 2447 :contents-begin 2325 :contents-end 2446 :post-blank 1 :post-affiliated 2325 :mode nil :granularity nil :parent #156) #("To push to dockerhub, first get the image name by running " 0 58 (:parent #160)) (verbatim (:begin 2383 :end 2398 :post-blank 0 :value "docker\nimages" :parent #160)) #(". Push to dockerhub using a command similar to:\n" 0 48 (:parent #160))) (fixed-width (:begin 2447 :end 2494 :value "docker push bonfacekilz/genenetwork2:latest" :post-blank 2 :post-affiliated 2447 :mode nil :granularity nil :parent #156)) (paragraph (:begin 2494 :end 2537 :contents-begin 2494 :contents-end 2536 :post-blank 1 :post-affiliated 2494 :mode nil :granularity nil :parent #156) #("Right now, we have 2 images on DockerHub:\n" 0 42 (:parent #162))) (plain-list (:type unordered :begin 2537 :end 2817 :contents-begin 2537 :contents-end 2817 :structure ((2537 0 "- " nil nil nil 2701) (2701 0 "- " nil nil nil 2817)) :post-blank 0 :post-affiliated 2537 :mode nil :granularity nil :parent #156) (item (:bullet "- " :begin 2537 :end 2701 :contents-begin 2539 :contents-end 2701 :checkbox nil :counter nil :structure ((2537 0 "- " nil nil nil 2701) (2701 0 "- " nil nil nil 2817)) :pre-blank 0 :post-blank 0 :post-affiliated 2537 :tag nil :mode item :granularity nil :parent #163) (paragraph (:begin 2539 :end 2701 :contents-begin 2539 :contents-end 2701 :post-blank 0 :post-affiliated 2539 :mode nil :granularity nil :parent #166) (link (:type "https" :path "//hub.docker.com/repository/docker/bonfacekilz/python2-genenetwork2" :format plain :raw-link "https://hub.docker.com/repository/docker/bonfacekilz/python2-genenetwork2" :application nil :search-option nil :begin 2539 :end 2612 :contents-begin nil :contents-end nil :post-blank 0 :parent #169)) #(":\n Contains the python2 version of gn2. Don't use this. Please use the\n python3 image!\n" 0 89 (:parent #169)))) (item (:bullet "- " :begin 2701 :end 2817 :contents-begin 2703 :contents-end 2817 :checkbox nil :counter nil :structure ((2537 0 "- " nil nil nil 2701) (2701 0 "- " nil nil nil 2817)) :pre-blank 0 :post-blank 0 :post-affiliated 2701 :tag nil :mode item :granularity nil :parent #163) (paragraph (:begin 2703 :end 2817 :contents-begin 2703 :contents-end 2817 :post-blank 0 :post-affiliated 2703 :mode nil :granularity nil :parent #167) (link (:type "https" :path "//hub.docker.com/repository/docker/bonfacekilz/python3-genenetwork2" :format plain :raw-link "https://hub.docker.com/repository/docker/bonfacekilz/python3-genenetwork2" :application nil :search-option nil :begin 2703 :end 2776 :contents-begin nil :contents-end nil :post-blank 0 :parent #170)) #(":\n Contains the python3 version of gn2.\n" 0 41 (:parent #170))))))))) #76)) #52)) #20 (item (:bullet "- " :begin 147 :end 209 :contents-begin 149 :contents-end 209 :checkbox nil :counter nil :structure ((113 0 "- " nil nil nil 147) (147 0 "- " nil nil nil 209) (209 0 "- " nil nil nil 259)) :pre-blank 0 :post-blank 0 :post-affiliated 147 :tag nil :mode item :granularity nil :parent #52) (paragraph (:begin 149 :end 209 :contents-begin 149 :contents-end 209 :post-blank 0 :post-affiliated 149 :mode nil :granularity nil :parent #56) (link (:type "custom-id" :path "creating-the-docker-images" :format bracket :raw-link "#creating-the-docker-images" :application nil :search-option nil :begin 149 :end 208 :contents-begin 180 :contents-end 206 :post-blank 0 :parent #59) #("Creating the Docker Images" 0 26 (:parent #62))) #("\n" 0 1 (:parent #59)))) (item (:bullet "- " :begin 209 :end 259 :contents-begin 211 :contents-end 259 :checkbox nil :counter nil :structure ((113 0 "- " nil nil nil 147) (147 0 "- " nil nil nil 209) (209 0 "- " nil nil nil 259)) :pre-blank 0 :post-blank 0 :post-affiliated 209 :tag nil :mode item :granularity nil :parent #52) (paragraph (:begin 211 :end 259 :contents-begin 211 :contents-end 259 :post-blank 0 :post-affiliated 211 :mode nil :granularity nil :parent #57) (link (:type "custom-id" :path "pushing-to-dockerhub" :format bracket :raw-link "#pushing-to-dockerhub" :application nil :search-option nil :begin 211 :end 258 :contents-begin 236 :contents-end 256 :post-blank 0 :parent #60) #("Pushing to DockerHub" 0 20 (:parent #63))) #("\n" 0 1 (:parent #60)))))) #0)) (link (:type "custom-id" :path "introduction" :format bracket :raw-link "#introduction" :application nil :search-option nil :begin 115 :end 146 :contents-begin 132 :contents-end 144 :post-blank 0 :parent #0) #("Introduction" 0 12 (:parent #3))) #("\n" 0 1 (:parent #0))) (:export-options (body-only) :back-end #s(org-export-backend :name html :parent nil :transcoders ((bold . org-html-bold) (center-block . org-html-center-block) (clock . org-html-clock) (code . org-html-code) (drawer . org-html-drawer) (dynamic-block . org-html-dynamic-block) (entity . org-html-entity) (example-block . org-html-example-block) (export-block . org-html-export-block) (export-snippet . org-html-export-snippet) (fixed-width . org-html-fixed-width) (footnote-reference . org-html-footnote-reference) (headline . org-html-headline) (horizontal-rule . org-html-horizontal-rule) (inline-src-block . org-html-inline-src-block) (inlinetask . org-html-inlinetask) (inner-template . org-html-inner-template) (italic . org-html-italic) (item . org-html-item) (keyword . org-html-keyword) (latex-environment . org-html-latex-environment) (latex-fragment . org-html-latex-fragment) (line-break . org-html-line-break) (link . org-html-link) (node-property . org-html-node-property) (paragraph . org-html-paragraph) (plain-list . org-html-plain-list) (plain-text . org-html-plain-text) (planning . org-html-planning) (property-drawer . org-html-property-drawer) (quote-block . org-html-quote-block) (radio-target . org-html-radio-target) (section . org-html-section) (special-block . org-html-special-block) (src-block . org-html-src-block) (statistics-cookie . org-html-statistics-cookie) (strike-through . org-html-strike-through) (subscript . org-html-subscript) (superscript . org-html-superscript) (table . org-html-table) (table-cell . org-html-table-cell) (table-row . org-html-table-row) (target . org-html-target) (template . org-html-template) (timestamp . org-html-timestamp) (underline . org-html-underline) (verbatim . org-html-verbatim) (verse-block . org-html-verse-block)) :options ((:html-doctype "HTML_DOCTYPE" nil org-html-doctype) (:html-container "HTML_CONTAINER" nil org-html-container-element) (:html-content-class "HTML_CONTENT_CLASS" nil org-html-content-class) (:description "DESCRIPTION" nil nil newline) (:keywords "KEYWORDS" nil nil space) (:html-html5-fancy nil "html5-fancy" org-html-html5-fancy) (:html-link-use-abs-url nil "html-link-use-abs-url" org-html-link-use-abs-url) (:html-link-home "HTML_LINK_HOME" nil org-html-link-home) (:html-link-up "HTML_LINK_UP" nil org-html-link-up) (:html-mathjax "HTML_MATHJAX" nil "" space) (:html-equation-reference-format "HTML_EQUATION_REFERENCE_FORMAT" nil org-html-equation-reference-format t) (:html-postamble nil "html-postamble" org-html-postamble) (:html-preamble nil "html-preamble" org-html-preamble) (:html-head "HTML_HEAD" nil org-html-head newline) (:html-head-extra "HTML_HEAD_EXTRA" nil org-html-head-extra newline) (:subtitle "SUBTITLE" nil nil parse) (:html-head-include-default-style nil "html-style" org-html-head-include-default-style) (:html-head-include-scripts nil "html-scripts" org-html-head-include-scripts) (:html-allow-name-attribute-in-anchors nil nil org-html-allow-name-attribute-in-anchors) (:html-divs nil nil org-html-divs) (:html-checkbox-type nil nil org-html-checkbox-type) (:html-extension nil nil org-html-extension) (:html-footnote-format nil nil org-html-footnote-format) (:html-footnote-separator nil nil org-html-footnote-separator) (:html-footnotes-section nil nil org-html-footnotes-section) (:html-format-drawer-function nil nil org-html-format-drawer-function) (:html-format-headline-function nil nil org-html-format-headline-function) (:html-format-inlinetask-function nil nil org-html-format-inlinetask-function) (:html-home/up-format nil nil org-html-home/up-format) (:html-indent nil nil org-html-indent) (:html-infojs-options nil nil org-html-infojs-options) (:html-infojs-template nil nil org-html-infojs-template) (:html-inline-image-rules nil nil org-html-inline-image-rules) (:html-link-org-files-as-html nil nil org-html-link-org-files-as-html) (:html-mathjax-options nil nil org-html-mathjax-options) (:html-mathjax-template nil nil org-html-mathjax-template) (:html-metadata-timestamp-format nil nil org-html-metadata-timestamp-format) (:html-postamble-format nil nil org-html-postamble-format) (:html-preamble-format nil nil org-html-preamble-format) (:html-prefer-user-labels nil nil org-html-prefer-user-labels) (:html-self-link-headlines nil nil org-html-self-link-headlines) (:html-table-align-individual-fields nil nil org-html-table-align-individual-fields) (:html-table-caption-above nil nil org-html-table-caption-above) (:html-table-data-tags nil nil org-html-table-data-tags) (:html-table-header-tags nil nil org-html-table-header-tags) (:html-table-use-header-tags-for-first-column nil nil org-html-table-use-header-tags-for-first-column) (:html-tag-class-prefix nil nil org-html-tag-class-prefix) (:html-text-markup-alist nil nil org-html-text-markup-alist) (:html-todo-kwd-class-prefix nil nil org-html-todo-kwd-class-prefix) (:html-toplevel-hlevel nil nil org-html-toplevel-hlevel) (:html-use-infojs nil nil org-html-use-infojs) (:html-validation-link nil nil org-html-validation-link) (:html-viewport nil nil org-html-viewport) (:html-inline-images nil nil org-html-inline-images) (:html-table-attributes nil nil org-html-table-default-attributes) (:html-table-row-open-tag nil nil org-html-table-row-open-tag) (:html-table-row-close-tag nil nil org-html-table-row-close-tag) (:html-xml-declaration nil nil org-html-xml-declaration) (:html-wrap-src-lines nil nil org-html-wrap-src-lines) (:html-klipsify-src nil nil org-html-klipsify-src) (:html-klipse-css nil nil org-html-klipse-css) (:html-klipse-js nil nil org-html-klipse-js) (:html-klipse-selection-script nil nil org-html-klipse-selection-script) (:infojs-opt "INFOJS_OPT" nil nil) (:creator "CREATOR" nil org-html-creator-string) (:with-latex nil "tex" org-html-with-latex) (:latex-header "LATEX_HEADER" nil nil newline)) :filters ((:filter-options . org-html-infojs-install-script) (:filter-parse-tree . org-html-image-link-filter) (:filter-final-output . org-html-final-function)) :blocks nil :menu (104 "Export to HTML" ((72 "As HTML buffer" org-html-export-as-html) (104 "As HTML file" org-html-export-to-html) (111 "As HTML file and open" (lambda (a s v b) (if a (org-html-export-to-html t s v b) (org-open-file (org-html-export-to-html nil s v b)))))))) :translate-alist ((bold . org-html-bold) (center-block . org-html-center-block) (clock . org-html-clock) (code . org-html-code) (drawer . org-html-drawer) (dynamic-block . org-html-dynamic-block) (entity . org-html-entity) (example-block . org-html-example-block) (export-block . org-html-export-block) (export-snippet . org-html-export-snippet) (fixed-width . org-html-fixed-width) (footnote-reference . org-html-footnote-reference) (headline . org-html-headline) (horizontal-rule . org-html-horizontal-rule) (inline-src-block . org-html-inline-src-block) (inlinetask . org-html-inlinetask) (inner-template . org-html-inner-template) (italic . org-html-italic) (item . org-html-item) (keyword . org-html-keyword) (latex-environment . org-html-latex-environment) (latex-fragment . org-html-latex-fragment) (line-break . org-html-line-break) (link . org-html-link) (node-property . org-html-node-property) (paragraph . org-html-paragraph) (plain-list . org-html-plain-list) (plain-text . org-html-plain-text) (planning . org-html-planning) (property-drawer . org-html-property-drawer) (quote-block . org-html-quote-block) (radio-target . org-html-radio-target) (section . org-html-section) (special-block . org-html-special-block) (src-block . org-html-src-block) (statistics-cookie . org-html-statistics-cookie) (strike-through . org-html-strike-through) (subscript . org-html-subscript) (superscript . org-html-superscript) (table . org-html-table) (table-cell . org-html-table-cell) (table-row . org-html-table-row) (target . org-html-target) (template . org-html-template) (timestamp . org-html-timestamp) (underline . org-html-underline) (verbatim . org-html-verbatim) (verse-block . org-html-verse-block)) :exported-data # :input-buffer " *temp*" :input-file nil :html-doctype "xhtml-strict" :html-container "div" :html-content-class "content" :description nil :keywords nil :html-html5-fancy nil :html-link-use-abs-url nil :html-link-home "" :html-link-up "" :html-mathjax "" :html-equation-reference-format "\\eqref{%s}" :html-postamble auto :html-preamble t :html-head "" :html-head-extra "" :subtitle nil :html-head-include-default-style t :html-head-include-scripts nil :html-allow-name-attribute-in-anchors nil :html-divs ((preamble "div" "preamble") (content "div" "content") (postamble "div" "postamble")) :html-checkbox-type ascii :html-extension "html" :html-footnote-format "%s" :html-footnote-separator ", " :html-footnotes-section "
\n

%s:

\n
\n%s\n
\n
" :html-format-drawer-function #f(compiled-function (name contents) #) :html-format-headline-function org-html-format-headline-default-function :html-format-inlinetask-function org-html-format-inlinetask-default-function :html-home/up-format "
\n UP \n |\n HOME \n
" :html-indent nil :html-infojs-options ((path . "https://orgmode.org/org-info.js") (view . "info") (toc . :with-toc) (ftoc . "0") (tdepth . "max") (sdepth . "max") (mouse . "underline") (buttons . "0") (ltoc . "1") (up . :html-link-up) (home . :html-link-home)) :html-infojs-template "\n\n" :html-inline-image-rules (("file" . "\\(?:\\.\\(?:gif\\|jp\\(?:e?g\\)\\|png\\|svg\\|webp\\)\\)") ("http" . "\\(?:\\.\\(?:gif\\|jp\\(?:e?g\\)\\|png\\|svg\\|webp\\)\\)") ("https" . "\\(?:\\.\\(?:gif\\|jp\\(?:e?g\\)\\|png\\|svg\\|webp\\)\\)")) :html-link-org-files-as-html t :html-mathjax-options ((path "https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-mml-chtml.js") (scale 1.0) (align "center") (font "mathjax-modern") (overflow "overflow") (tags "ams") (indent "0em") (multlinewidth "85%") (tagindent ".8em") (tagside "right")) :html-mathjax-template "\n\n\n" :html-metadata-timestamp-format "%Y-%m-%d %a %H:%M" :html-postamble-format (("en" "

Author: %a (%e)

\n

Date: %d

\n

%c

\n

%v

")) :html-preamble-format (("en" "")) :html-prefer-user-labels nil :html-self-link-headlines nil :html-table-align-individual-fields t :html-table-caption-above t :html-table-data-tags ("" . "") :html-table-header-tags ("" . "") :html-table-use-header-tags-for-first-column nil :html-tag-class-prefix "" :html-text-markup-alist ((bold . "%s") (code . "%s") (italic . "%s") (strike-through . "%s") (underline . "%s") (verbatim . "%s")) :html-todo-kwd-class-prefix "" :html-toplevel-hlevel 2 :html-use-infojs when-configured :html-validation-link "Validate" :html-viewport ((width "device-width") (initial-scale "1") (minimum-scale "") (maximum-scale "") (user-scalable "")) :html-inline-images t :html-table-attributes (:border "2" :cellspacing "0" :cellpadding "6" :rules "groups" :frame "hsides") :html-table-row-open-tag "" :html-table-row-close-tag "" :html-xml-declaration (("html" . "") ("php" . "\"; ?>")) :html-wrap-src-lines nil :html-klipsify-src nil :html-klipse-css "https://storage.googleapis.com/app.klipse.tech/css/codemirror.css" :html-klipse-js "https://storage.googleapis.com/app.klipse.tech/plugin_prod/js/klipse_plugin.min.js" :html-klipse-selection-script "window.klipse_settings = {selector_eval_html: '.src-html',\n selector_eval_js: '.src-js',\n selector_eval_python_client: '.src-python',\n selector_eval_scheme: '.src-scheme',\n selector: '.src-clojure',\n selector_eval_ruby: '.src-ruby'};" :infojs-opt nil :creator "Emacs 29.4 (Org mode 9.6.15)" :with-latex t :latex-header nil :title (#("Genenetwork2 Dockerized" 0 23 (:parent #148))) :date nil :author (#("unknown" 0 7 (:parent #152))) :email "unknown@genenetwork-development" :language "en" :select-tags ("export") :exclude-tags ("noexport") :headline-levels 3 :preserve-breaks nil :section-numbers nil :time-stamp-file t :with-archived-trees headline :with-author t :with-broken-links nil :with-clocks nil :with-creator nil :with-date t :with-drawers (not "LOGBOOK") :with-email nil :with-emphasize t :with-entities t :with-fixed-width t :with-footnotes t :with-inlinetasks t :with-planning nil :with-priority nil :with-properties nil :with-smart-quotes nil :with-special-strings t :with-statistics-cookies t :with-sub-superscript t :with-toc nil :with-tables t :with-tags t :with-tasks t :with-timestamps t :with-title t :with-todo-keywords t :cite-export (basic nil nil) :bibliography nil :filter-body nil :filter-bold nil :filter-babel-call nil :filter-center-block nil :filter-clock nil :filter-code nil :filter-diary-sexp nil :filter-drawer nil :filter-dynamic-block nil :filter-entity nil :filter-example-block nil :filter-export-block nil :filter-export-snippet nil :filter-final-output (org-html-final-function) :filter-fixed-width nil :filter-footnote-definition nil :filter-footnote-reference nil :filter-headline nil :filter-horizontal-rule nil :filter-inline-babel-call nil :filter-inline-src-block nil :filter-inlinetask nil :filter-italic nil :filter-item nil :filter-keyword nil :filter-latex-environment nil :filter-latex-fragment nil :filter-line-break nil :filter-link nil :filter-node-property nil :filter-options (org-html-infojs-install-script) :filter-paragraph nil :filter-parse-tree (org-html-image-link-filter) :filter-plain-list nil :filter-plain-text nil :filter-planning nil :filter-property-drawer nil :filter-quote-block nil :filter-radio-target nil :filter-section nil :filter-special-block nil :filter-src-block nil :filter-statistics-cookie nil :filter-strike-through nil :filter-subscript nil :filter-superscript nil :filter-table nil :filter-table-cell nil :filter-table-row nil :filter-target nil :filter-timestamp nil :filter-underline nil :filter-verbatim nil :filter-verse-block nil :ignore-list nil :parse-tree (org-data (:begin 1 :contents-begin 1 :contents-end 2817 :end 2817 :robust-begin 3 :robust-end 2815 :post-blank 0 :post-affiliated 1 :path nil :mode org-data :CATEGORY nil :granularity nil) (section (:begin 1 :end 35 :contents-begin 1 :contents-end 34 :robust-begin 1 :robust-end 32 :post-blank 1 :post-affiliated 1 :mode first-section :granularity nil :parent #338) (keyword (:key "TITLE" :value "Genenetwork2 Dockerized" :begin 1 :end 34 :post-blank 0 :post-affiliated 1 :mode top-comment :granularity nil :parent #341))) (headline (:raw-value "Table of Contents" :begin 35 :end 260 :pre-blank 0 :contents-begin 113 :contents-end 259 :robust-begin 115 :robust-end 257 :level 1 :priority nil :tags ("TOC") :todo-keyword nil :todo-type nil :post-blank 1 :footnote-section-p nil :archivedp nil :commentedp nil :post-affiliated 35 :title (#("Table of Contents" 0 17 (:parent #342))) :mode nil :granularity nil :parent #338) (section (:begin 113 :end 260 :contents-begin 113 :contents-end 259 :robust-begin 113 :robust-end 257 :post-blank 1 :post-affiliated 113 :mode section :granularity nil :parent #342) (plain-list (:type unordered :begin 113 :end 259 :contents-begin 113 :contents-end 259 :structure ((113 0 "- " nil nil nil 147) (147 0 "- " nil nil nil 209) (209 0 "- " nil nil nil 259)) :post-blank 0 :post-affiliated 113 :mode planning :granularity nil :parent #345) (item (:bullet "- " :begin 113 :end 147 :contents-begin 115 :contents-end 147 :checkbox nil :counter nil :structure ((113 0 "- " nil nil nil 147) (147 0 "- " nil nil nil 209) (209 0 "- " nil nil nil 259)) :pre-blank 0 :post-blank 0 :post-affiliated 113 :tag nil :mode item :granularity nil :parent #348) (paragraph (:begin 115 :end 147 :contents-begin 115 :contents-end 147 :post-blank 0 :post-affiliated 115 :mode nil :granularity nil :parent #351) (link (:type "custom-id" :path "introduction" :format bracket :raw-link "#introduction" :application nil :search-option nil :begin 115 :end 146 :contents-begin 132 :contents-end 144 :post-blank 0 :parent #354) #("Introduction" 0 12 (:parent #357))) #("\n" 0 1 (:parent #354)))) (item (:bullet "- " :begin 147 :end 209 :contents-begin 149 :contents-end 209 :checkbox nil :counter nil :structure ((113 0 "- " nil nil nil 147) (147 0 "- " nil nil nil 209) (209 0 "- " nil nil nil 259)) :pre-blank 0 :post-blank 0 :post-affiliated 147 :tag nil :mode item :granularity nil :parent #348) (paragraph (:begin 149 :end 209 :contents-begin 149 :contents-end 209 :post-blank 0 :post-affiliated 149 :mode nil :granularity nil :parent #352) (link (:type "custom-id" :path "creating-the-docker-images" :format bracket :raw-link "#creating-the-docker-images" :application nil :search-option nil :begin 149 :end 208 :contents-begin 180 :contents-end 206 :post-blank 0 :parent #355) #("Creating the Docker Images" 0 26 (:parent #358))) #("\n" 0 1 (:parent #355)))) (item (:bullet "- " :begin 209 :end 259 :contents-begin 211 :contents-end 259 :checkbox nil :counter nil :structure ((113 0 "- " nil nil nil 147) (147 0 "- " nil nil nil 209) (209 0 "- " nil nil nil 259)) :pre-blank 0 :post-blank 0 :post-affiliated 209 :tag nil :mode item :granularity nil :parent #348) (paragraph (:begin 211 :end 259 :contents-begin 211 :contents-end 259 :post-blank 0 :post-affiliated 211 :mode nil :granularity nil :parent #353) (link (:type "custom-id" :path "pushing-to-dockerhub" :format bracket :raw-link "#pushing-to-dockerhub" :application nil :search-option nil :begin 211 :end 258 :contents-begin 236 :contents-end 256 :post-blank 0 :parent #356) #("Pushing to DockerHub" 0 20 (:parent #359))) #("\n" 0 1 (:parent #356))))))) (headline (:raw-value "Introduction" :begin 260 :end 926 :pre-blank 1 :contents-begin 276 :contents-end 925 :robust-begin 278 :robust-end 923 :level 1 :priority nil :tags nil :todo-keyword nil :todo-type nil :post-blank 1 :footnote-section-p nil :archivedp nil :commentedp nil :post-affiliated 260 :title (#("Introduction" 0 12 (:parent #343))) :mode nil :granularity nil :parent #338) (section (:begin 276 :end 926 :contents-begin 276 :contents-end 925 :robust-begin 276 :robust-end 923 :post-blank 1 :post-affiliated 276 :mode section :granularity nil :parent #343) (paragraph (:begin 276 :end 600 :contents-begin 276 :contents-end 599 :post-blank 1 :post-affiliated 276 :mode planning :granularity nil :parent #346) #("The CI(Continuous Integration) system for Genenetwork2 uses " 0 60 (:parent #349)) (link (:type "https" :path "//github.com/features/actions" :format bracket :raw-link "https://github.com/features/actions" :application nil :search-option nil :begin 336 :end 391 :contents-begin 375 :contents-end 389 :post-blank 0 :parent #349) #("Github\nActions" 0 14 (:parent #353))) #(". As such, it's important to have a way to run tests using\nfacilities provided by GUIX in a reproducible way. This project\nleverages GUIX to generate a docker container from which the unittests\nare ran from.\n" 0 208 (:parent #349))) (paragraph (:begin 600 :end 830 :contents-begin 600 :contents-end 829 :post-blank 1 :post-affiliated 600 :mode nil :granularity nil :parent #346) #("Find instructions on how to set docker up inside GUIX " 0 54 (:parent #350)) (link (:type "https" :path "//github.com/pjotrp/guix-notes/blob/master/CONTAINERS.org#run-docker" :format bracket :raw-link "https://github.com/pjotrp/guix-notes/blob/master/CONTAINERS.org#run-docker" :application nil :search-option nil :begin 654 :end 738 :contents-begin 732 :contents-end 736 :post-blank 0 :parent #350) #("here" 0 4 (:parent #354))) #(". This\ndocument will not get into that. It's assumed that you have a working\ndocker setup.\n" 0 91 (:parent #350))) (paragraph (:begin 830 :end 925 :contents-begin 830 :contents-end 925 :post-blank 0 :post-affiliated 830 :mode nil :granularity nil :parent #346) #("The rest of this document outlines how the docker container used in\nthe CI builds was created.\n" 0 95 (:parent #351))))) (headline (:raw-value "Creating the Docker Images" :begin 926 :end 2194 :pre-blank 1 :contents-begin 956 :contents-end 2193 :robust-begin 958 :robust-end 2191 :level 1 :priority nil :tags nil :todo-keyword nil :todo-type nil :post-blank 1 :footnote-section-p nil :archivedp nil :commentedp nil :post-affiliated 926 :title (#("Creating the Docker Images" 0 26 (:parent #344))) :mode nil :granularity nil :parent #338) (section (:begin 956 :end 2194 :contents-begin 956 :contents-end 2193 :robust-begin 956 :robust-end 2191 :post-blank 1 :post-affiliated 956 :mode section :granularity nil :parent #344) (paragraph (:begin 956 :end 1071 :contents-begin 956 :contents-end 1070 :post-blank 1 :post-affiliated 956 :mode planning :granularity nil :parent #347) #("The general idea is that GUIX is used to generate a set of binaries,\nwhich will be added to a base mariaDB image.\n" 0 114 (:parent #350))) (paragraph (:begin 1071 :end 1117 :contents-begin 1071 :contents-end 1116 :post-blank 1 :post-affiliated 1071 :mode nil :granularity nil :parent #347) #("First create the gn2 tar archive by running:\n" 0 45 (:parent #351))) (src-block (:language "sh" :switches nil :parameters nil :begin 1117 :end 1343 :number-lines nil :preserve-indent nil :retain-labels t :use-labels t :label-fmt nil :value "env GUIX_PACKAGE_PATH=\"/home/bonface/projects/guix-bioinformatics:/home/bonface/projects/guix-past/modules\" \\\n ./pre-inst-env guix pack --no-grafts\\\n -S /gn2-profile=/ \\\n screen genenetwork2\n" :post-blank 1 :post-affiliated 1117 :mode nil :granularity nil :parent #347)) (paragraph (:begin 1343 :end 1387 :contents-begin 1343 :contents-end 1386 :post-blank 1 :post-affiliated 1343 :mode nil :granularity nil :parent #347) #("The output will look something similar to:\n" 0 43 (:parent #353))) (fixed-width (:begin 1387 :end 1454 :value "/gnu/store/x3m77vwaqcwba24p5s4lrb7w2ii16lj9-tarball-pack.tar.gz" :post-blank 2 :post-affiliated 1387 :mode nil :granularity nil :parent #347)) (paragraph (:begin 1454 :end 1640 :contents-begin 1454 :contents-end 1639 :post-blank 1 :post-affiliated 1454 :mode nil :granularity nil :parent #347) #("Now create a folder from which will host the following dockerfile. You\ncan name this file Dockerfile. Note that mariadb is the base image\nsince it already has mariadb installed for us.\n" 0 185 (:parent #355))) (src-block (:language "conf" :switches nil :parameters nil :begin 1640 :end 1847 :number-lines nil :preserve-indent nil :retain-labels t :use-labels t :label-fmt nil :value "FROM mariadb:latest\n\nCOPY ./gn2.tar.gz /tmp/gn2.tar.gz\nRUN tar -xzf /tmp/gn2.tar.gz -C / && rm -f /tmp/gn2.tar.gz && \\\n mkdir -p /usr/local/mysql /genotype_files/genotype/json\n" :post-blank 1 :post-affiliated 1640 :mode nil :granularity nil :parent #347)) (paragraph (:begin 1847 :end 1895 :contents-begin 1847 :contents-end 1894 :post-blank 1 :post-affiliated 1847 :mode nil :granularity nil :parent #347) #("Build the image(Note the fullstop at the end):\n" 0 47 (:parent #357))) (fixed-width (:begin 1895 :end 1955 :value "sudo docker build -t genenetwork2:latest -f Dockerfile ." :post-blank 2 :post-affiliated 1895 :mode nil :granularity nil :parent #347)) (paragraph (:begin 1955 :end 2009 :contents-begin 1955 :contents-end 2008 :post-blank 1 :post-affiliated 1955 :mode nil :granularity nil :parent #347) #("To load the image interactively you've just created:\n" 0 53 (:parent #359))) (fixed-width (:begin 2009 :end 2054 :value "docker run -ti \"genenetwork2:latest\" bash" :post-blank 2 :post-affiliated 2009 :mode nil :granularity nil :parent #347)) (paragraph (:begin 2054 :end 2141 :contents-begin 2054 :contents-end 2140 :post-blank 1 :post-affiliated 2054 :mode nil :granularity nil :parent #347) #("Assuming you have a docker instance running, you could always run\ncommands in it e.g:\n" 0 86 (:parent #361))) (fixed-width (:begin 2141 :end 2193 :value "docker run \"genenetwork2:latest\" python --version" :post-blank 1 :post-affiliated 2141 :mode nil :granularity nil :parent #347)))) (headline (:raw-value "Pushing to DockerHub" :begin 2194 :end 2817 :pre-blank 1 :contents-begin 2218 :contents-end 2817 :robust-begin 2220 :robust-end 2815 :level 1 :priority nil :tags nil :todo-keyword nil :todo-type nil :post-blank 0 :footnote-section-p nil :archivedp nil :commentedp nil :post-affiliated 2194 :title (#("Pushing to DockerHub" 0 20 (:parent #345))) :mode nil :granularity nil :parent #338) (section (:begin 2218 :end 2817 :contents-begin 2218 :contents-end 2817 :robust-begin 2218 :robust-end 2815 :post-blank 0 :post-affiliated 2218 :mode section :granularity nil :parent #345) (paragraph (:begin 2218 :end 2325 :contents-begin 2218 :contents-end 2324 :post-blank 1 :post-affiliated 2218 :mode planning :granularity nil :parent #348) #("We use DockerHub to store the docker images from which we use on our\nCI environment using Github Actions.\n" 0 106 (:parent #351))) (paragraph (:begin 2325 :end 2447 :contents-begin 2325 :contents-end 2446 :post-blank 1 :post-affiliated 2325 :mode nil :granularity nil :parent #348) #("To push to dockerhub, first get the image name by running " 0 58 (:parent #352)) (verbatim (:begin 2383 :end 2398 :post-blank 0 :value "docker\nimages" :parent #352)) #(". Push to dockerhub using a command similar to:\n" 0 48 (:parent #352))) (fixed-width (:begin 2447 :end 2494 :value "docker push bonfacekilz/genenetwork2:latest" :post-blank 2 :post-affiliated 2447 :mode nil :granularity nil :parent #348)) (paragraph (:begin 2494 :end 2537 :contents-begin 2494 :contents-end 2536 :post-blank 1 :post-affiliated 2494 :mode nil :granularity nil :parent #348) #("Right now, we have 2 images on DockerHub:\n" 0 42 (:parent #354))) (plain-list (:type unordered :begin 2537 :end 2817 :contents-begin 2537 :contents-end 2817 :structure ((2537 0 "- " nil nil nil 2701) (2701 0 "- " nil nil nil 2817)) :post-blank 0 :post-affiliated 2537 :mode nil :granularity nil :parent #348) (item (:bullet "- " :begin 2537 :end 2701 :contents-begin 2539 :contents-end 2701 :checkbox nil :counter nil :structure ((2537 0 "- " nil nil nil 2701) (2701 0 "- " nil nil nil 2817)) :pre-blank 0 :post-blank 0 :post-affiliated 2537 :tag nil :mode item :granularity nil :parent #355) (paragraph (:begin 2539 :end 2701 :contents-begin 2539 :contents-end 2701 :post-blank 0 :post-affiliated 2539 :mode nil :granularity nil :parent #358) (link (:type "https" :path "//hub.docker.com/repository/docker/bonfacekilz/python2-genenetwork2" :format plain :raw-link "https://hub.docker.com/repository/docker/bonfacekilz/python2-genenetwork2" :application nil :search-option nil :begin 2539 :end 2612 :contents-begin nil :contents-end nil :post-blank 0 :parent #361)) #(":\n Contains the python2 version of gn2. Don't use this. Please use the\n python3 image!\n" 0 89 (:parent #361)))) (item (:bullet "- " :begin 2701 :end 2817 :contents-begin 2703 :contents-end 2817 :checkbox nil :counter nil :structure ((2537 0 "- " nil nil nil 2701) (2701 0 "- " nil nil nil 2817)) :pre-blank 0 :post-blank 0 :post-affiliated 2701 :tag nil :mode item :granularity nil :parent #355) (paragraph (:begin 2703 :end 2817 :contents-begin 2703 :contents-end 2817 :post-blank 0 :post-affiliated 2703 :mode nil :granularity nil :parent #359) (link (:type "https" :path "//hub.docker.com/repository/docker/bonfacekilz/python3-genenetwork2" :format plain :raw-link "https://hub.docker.com/repository/docker/bonfacekilz/python3-genenetwork2" :application nil :search-option nil :begin 2703 :end 2776 :contents-begin nil :contents-end nil :post-blank 0 :parent #362)) #(":\n Contains the python3 version of gn2.\n" 0 41 (:parent #362)))))))) :headline-offset 0 :headline-numbering nil :id-alist nil :citations nil :id-local-cache #)) #f(compiled-function (element) #)((paragraph (:begin 115 :end 147 :contents-begin 115 :contents-end 147 :post-blank 0 :post-affiliated 115 :mode nil :granularity nil :parent (item (:bullet "- " :begin 113 :end 147 :contents-begin 115 :contents-end 147 :checkbox nil :counter nil :structure ((113 0 "- " nil nil nil 147) (147 0 "- " nil nil nil 209) (209 0 "- " nil nil nil 259)) :pre-blank 0 :post-blank 0 :post-affiliated 113 :tag nil :mode item :granularity nil :parent (plain-list (:type unordered :begin 113 :end 259 :contents-begin 113 :contents-end 259 :structure ((113 0 "- " nil nil nil 147) (147 0 "- " nil nil nil 209) (209 0 "- " nil nil nil 259)) :post-blank 0 :post-affiliated 113 :mode planning :granularity nil :parent (section (:begin 113 :end 260 :contents-begin 113 :contents-end 259 :robust-begin 113 :robust-end 257 :post-blank 1 :post-affiliated 113 :mode section :granularity nil :parent (headline (:raw-value "Table of Contents" :begin 35 :end 260 :pre-blank 0 :contents-begin 113 :contents-end 259 :robust-begin 115 :robust-end 257 :level 1 :priority nil :tags ("TOC") :todo-keyword nil :todo-type nil :post-blank 1 :footnote-section-p nil :archivedp nil :commentedp nil :post-affiliated 35 :title (#("Table of Contents" 0 17 (:parent #100))) :mode nil :granularity nil :parent (org-data (:begin 1 :contents-begin 1 :contents-end 2817 :end 2817 :robust-begin 3 :robust-end 2815 :post-blank 0 :post-affiliated 1 :path nil :mode org-data :CATEGORY nil :granularity nil) (section (:begin 1 :end 35 :contents-begin 1 :contents-end 34 :robust-begin 1 :robust-end 32 :post-blank 1 :post-affiliated 1 :mode first-section :granularity nil :parent #146) (keyword (:key "TITLE" :value "Genenetwork2 Dockerized" :begin 1 :end 34 :post-blank 0 :post-affiliated 1 :mode top-comment :granularity nil :parent #149))) #100 (headline (:raw-value "Introduction" :begin 260 :end 926 :pre-blank 1 :contents-begin 276 :contents-end 925 :robust-begin 278 :robust-end 923 :level 1 :priority nil :tags nil :todo-keyword nil :todo-type nil :post-blank 1 :footnote-section-p nil :archivedp nil :commentedp nil :post-affiliated 260 :title (#("Introduction" 0 12 (:parent #151))) :mode nil :granularity nil :parent #146) (section (:begin 276 :end 926 :contents-begin 276 :contents-end 925 :robust-begin 276 :robust-end 923 :post-blank 1 :post-affiliated 276 :mode section :granularity nil :parent #151) (paragraph (:begin 276 :end 600 :contents-begin 276 :contents-end 599 :post-blank 1 :post-affiliated 276 :mode planning :granularity nil :parent #154) #("The CI(Continuous Integration) system for Genenetwork2 uses " 0 60 (:parent #157)) (link (:type "https" :path "//github.com/features/actions" :format bracket :raw-link "https://github.com/features/actions" :application nil :search-option nil :begin 336 :end 391 :contents-begin 375 :contents-end 389 :post-blank 0 :parent #157) #("Github\nActions" 0 14 (:parent #161))) #(". As such, it's important to have a way to run tests using\nfacilities provided by GUIX in a reproducible way. This project\nleverages GUIX to generate a docker container from which the unittests\nare ran from.\n" 0 208 (:parent #157))) (paragraph (:begin 600 :end 830 :contents-begin 600 :contents-end 829 :post-blank 1 :post-affiliated 600 :mode nil :granularity nil :parent #154) #("Find instructions on how to set docker up inside GUIX " 0 54 (:parent #158)) (link (:type "https" :path "//github.com/pjotrp/guix-notes/blob/master/CONTAINERS.org#run-docker" :format bracket :raw-link "https://github.com/pjotrp/guix-notes/blob/master/CONTAINERS.org#run-docker" :application nil :search-option nil :begin 654 :end 738 :contents-begin 732 :contents-end 736 :post-blank 0 :parent #158) #("here" 0 4 (:parent #162))) #(". This\ndocument will not get into that. It's assumed that you have a working\ndocker setup.\n" 0 91 (:parent #158))) (paragraph (:begin 830 :end 925 :contents-begin 830 :contents-end 925 :post-blank 0 :post-affiliated 830 :mode nil :granularity nil :parent #154) #("The rest of this document outlines how the docker container used in\nthe CI builds was created.\n" 0 95 (:parent #159))))) (headline (:raw-value "Creating the Docker Images" :begin 926 :end 2194 :pre-blank 1 :contents-begin 956 :contents-end 2193 :robust-begin 958 :robust-end 2191 :level 1 :priority nil :tags nil :todo-keyword nil :todo-type nil :post-blank 1 :footnote-section-p nil :archivedp nil :commentedp nil :post-affiliated 926 :title (#("Creating the Docker Images" 0 26 (:parent #152))) :mode nil :granularity nil :parent #146) (section (:begin 956 :end 2194 :contents-begin 956 :contents-end 2193 :robust-begin 956 :robust-end 2191 :post-blank 1 :post-affiliated 956 :mode section :granularity nil :parent #152) (paragraph (:begin 956 :end 1071 :contents-begin 956 :contents-end 1070 :post-blank 1 :post-affiliated 956 :mode planning :granularity nil :parent #155) #("The general idea is that GUIX is used to generate a set of binaries,\nwhich will be added to a base mariaDB image.\n" 0 114 (:parent #158))) (paragraph (:begin 1071 :end 1117 :contents-begin 1071 :contents-end 1116 :post-blank 1 :post-affiliated 1071 :mode nil :granularity nil :parent #155) #("First create the gn2 tar archive by running:\n" 0 45 (:parent #159))) (src-block (:language "sh" :switches nil :parameters nil :begin 1117 :end 1343 :number-lines nil :preserve-indent nil :retain-labels t :use-labels t :label-fmt nil :value "env GUIX_PACKAGE_PATH=\"/home/bonface/projects/guix-bioinformatics:/home/bonface/projects/guix-past/modules\" \\\n ./pre-inst-env guix pack --no-grafts\\\n -S /gn2-profile=/ \\\n screen genenetwork2\n" :post-blank 1 :post-affiliated 1117 :mode nil :granularity nil :parent #155)) (paragraph (:begin 1343 :end 1387 :contents-begin 1343 :contents-end 1386 :post-blank 1 :post-affiliated 1343 :mode nil :granularity nil :parent #155) #("The output will look something similar to:\n" 0 43 (:parent #161))) (fixed-width (:begin 1387 :end 1454 :value "/gnu/store/x3m77vwaqcwba24p5s4lrb7w2ii16lj9-tarball-pack.tar.gz" :post-blank 2 :post-affiliated 1387 :mode nil :granularity nil :parent #155)) (paragraph (:begin 1454 :end 1640 :contents-begin 1454 :contents-end 1639 :post-blank 1 :post-affiliated 1454 :mode nil :granularity nil :parent #155) #("Now create a folder from which will host the following dockerfile. You\ncan name this file Dockerfile. Note that mariadb is the base image\nsince it already has mariadb installed for us.\n" 0 185 (:parent #163))) (src-block (:language "conf" :switches nil :parameters nil :begin 1640 :end 1847 :number-lines nil :preserve-indent nil :retain-labels t :use-labels t :label-fmt nil :value "FROM mariadb:latest\n\nCOPY ./gn2.tar.gz /tmp/gn2.tar.gz\nRUN tar -xzf /tmp/gn2.tar.gz -C / && rm -f /tmp/gn2.tar.gz && \\\n mkdir -p /usr/local/mysql /genotype_files/genotype/json\n" :post-blank 1 :post-affiliated 1640 :mode nil :granularity nil :parent #155)) (paragraph (:begin 1847 :end 1895 :contents-begin 1847 :contents-end 1894 :post-blank 1 :post-affiliated 1847 :mode nil :granularity nil :parent #155) #("Build the image(Note the fullstop at the end):\n" 0 47 (:parent #165))) (fixed-width (:begin 1895 :end 1955 :value "sudo docker build -t genenetwork2:latest -f Dockerfile ." :post-blank 2 :post-affiliated 1895 :mode nil :granularity nil :parent #155)) (paragraph (:begin 1955 :end 2009 :contents-begin 1955 :contents-end 2008 :post-blank 1 :post-affiliated 1955 :mode nil :granularity nil :parent #155) #("To load the image interactively you've just created:\n" 0 53 (:parent #167))) (fixed-width (:begin 2009 :end 2054 :value "docker run -ti \"genenetwork2:latest\" bash" :post-blank 2 :post-affiliated 2009 :mode nil :granularity nil :parent #155)) (paragraph (:begin 2054 :end 2141 :contents-begin 2054 :contents-end 2140 :post-blank 1 :post-affiliated 2054 :mode nil :granularity nil :parent #155) #("Assuming you have a docker instance running, you could always run\ncommands in it e.g:\n" 0 86 (:parent #169))) (fixed-width (:begin 2141 :end 2193 :value "docker run \"genenetwork2:latest\" python --version" :post-blank 1 :post-affiliated 2141 :mode nil :granularity nil :parent #155)))) (headline (:raw-value "Pushing to DockerHub" :begin 2194 :end 2817 :pre-blank 1 :contents-begin 2218 :contents-end 2817 :robust-begin 2220 :robust-end 2815 :level 1 :priority nil :tags nil :todo-keyword nil :todo-type nil :post-blank 0 :footnote-section-p nil :archivedp nil :commentedp nil :post-affiliated 2194 :title (#("Pushing to DockerHub" 0 20 (:parent #153))) :mode nil :granularity nil :parent #146) (section (:begin 2218 :end 2817 :contents-begin 2218 :contents-end 2817 :robust-begin 2218 :robust-end 2815 :post-blank 0 :post-affiliated 2218 :mode section :granularity nil :parent #153) (paragraph (:begin 2218 :end 2325 :contents-begin 2218 :contents-end 2324 :post-blank 1 :post-affiliated 2218 :mode planning :granularity nil :parent #156) #("We use DockerHub to store the docker images from which we use on our\nCI environment using Github Actions.\n" 0 106 (:parent #159))) (paragraph (:begin 2325 :end 2447 :contents-begin 2325 :contents-end 2446 :post-blank 1 :post-affiliated 2325 :mode nil :granularity nil :parent #156) #("To push to dockerhub, first get the image name by running " 0 58 (:parent #160)) (verbatim (:begin 2383 :end 2398 :post-blank 0 :value "docker\nimages" :parent #160)) #(". Push to dockerhub using a command similar to:\n" 0 48 (:parent #160))) (fixed-width (:begin 2447 :end 2494 :value "docker push bonfacekilz/genenetwork2:latest" :post-blank 2 :post-affiliated 2447 :mode nil :granularity nil :parent #156)) (paragraph (:begin 2494 :end 2537 :contents-begin 2494 :contents-end 2536 :post-blank 1 :post-affiliated 2494 :mode nil :granularity nil :parent #156) #("Right now, we have 2 images on DockerHub:\n" 0 42 (:parent #162))) (plain-list (:type unordered :begin 2537 :end 2817 :contents-begin 2537 :contents-end 2817 :structure ((2537 0 "- " nil nil nil 2701) (2701 0 "- " nil nil nil 2817)) :post-blank 0 :post-affiliated 2537 :mode nil :granularity nil :parent #156) (item (:bullet "- " :begin 2537 :end 2701 :contents-begin 2539 :contents-end 2701 :checkbox nil :counter nil :structure ((2537 0 "- " nil nil nil 2701) (2701 0 "- " nil nil nil 2817)) :pre-blank 0 :post-blank 0 :post-affiliated 2537 :tag nil :mode item :granularity nil :parent #163) (paragraph (:begin 2539 :end 2701 :contents-begin 2539 :contents-end 2701 :post-blank 0 :post-affiliated 2539 :mode nil :granularity nil :parent #166) (link (:type "https" :path "//hub.docker.com/repository/docker/bonfacekilz/python2-genenetwork2" :format plain :raw-link "https://hub.docker.com/repository/docker/bonfacekilz/python2-genenetwork2" :application nil :search-option nil :begin 2539 :end 2612 :contents-begin nil :contents-end nil :post-blank 0 :parent #169)) #(":\n Contains the python2 version of gn2. Don't use this. Please use the\n python3 image!\n" 0 89 (:parent #169)))) (item (:bullet "- " :begin 2701 :end 2817 :contents-begin 2703 :contents-end 2817 :checkbox nil :counter nil :structure ((2537 0 "- " nil nil nil 2701) (2701 0 "- " nil nil nil 2817)) :pre-blank 0 :post-blank 0 :post-affiliated 2701 :tag nil :mode item :granularity nil :parent #163) (paragraph (:begin 2703 :end 2817 :contents-begin 2703 :contents-end 2817 :post-blank 0 :post-affiliated 2703 :mode nil :granularity nil :parent #167) (link (:type "https" :path "//hub.docker.com/repository/docker/bonfacekilz/python3-genenetwork2" :format plain :raw-link "https://hub.docker.com/repository/docker/bonfacekilz/python3-genenetwork2" :application nil :search-option nil :begin 2703 :end 2776 :contents-begin nil :contents-end nil :post-blank 0 :parent #170)) #(":\n Contains the python3 version of gn2.\n" 0 41 (:parent #170))))))))) #76)) #52)) #20 (item (:bullet "- " :begin 147 :end 209 :contents-begin 149 :contents-end 209 :checkbox nil :counter nil :structure ((113 0 "- " nil nil nil 147) (147 0 "- " nil nil nil 209) (209 0 "- " nil nil nil 259)) :pre-blank 0 :post-blank 0 :post-affiliated 147 :tag nil :mode item :granularity nil :parent #52) (paragraph (:begin 149 :end 209 :contents-begin 149 :contents-end 209 :post-blank 0 :post-affiliated 149 :mode nil :granularity nil :parent #56) (link (:type "custom-id" :path "creating-the-docker-images" :format bracket :raw-link "#creating-the-docker-images" :application nil :search-option nil :begin 149 :end 208 :contents-begin 180 :contents-end 206 :post-blank 0 :parent #59) #("Creating the Docker Images" 0 26 (:parent #62))) #("\n" 0 1 (:parent #59)))) (item (:bullet "- " :begin 209 :end 259 :contents-begin 211 :contents-end 259 :checkbox nil :counter nil :structure ((113 0 "- " nil nil nil 147) (147 0 "- " nil nil nil 209) (209 0 "- " nil nil nil 259)) :pre-blank 0 :post-blank 0 :post-affiliated 209 :tag nil :mode item :granularity nil :parent #52) (paragraph (:begin 211 :end 259 :contents-begin 211 :contents-end 259 :post-blank 0 :post-affiliated 211 :mode nil :granularity nil :parent #57) (link (:type "custom-id" :path "pushing-to-dockerhub" :format bracket :raw-link "#pushing-to-dockerhub" :application nil :search-option nil :begin 211 :end 258 :contents-begin 236 :contents-end 256 :post-blank 0 :parent #60) #("Pushing to DockerHub" 0 20 (:parent #63))) #("\n" 0 1 (:parent #60)))))) #0)) (link (:type "custom-id" :path "introduction" :format bracket :raw-link "#introduction" :application nil :search-option nil :begin 115 :end 146 :contents-begin 132 :contents-end 144 :post-blank 0 :parent #0) #("Introduction" 0 12 (:parent #3))) #("\n" 0 1 (:parent #0)))) mapconcat(#f(compiled-function (element) #) ((paragraph (:begin 115 :end 147 :contents-begin 115 :contents-end 147 :post-blank 0 :post-affiliated 115 :mode nil :granularity nil :parent (item (:bullet "- " :begin 113 :end 147 :contents-begin 115 :contents-end 147 :checkbox nil :counter nil :structure ((113 0 "- " nil nil nil 147) (147 0 "- " nil nil nil 209) (209 0 "- " nil nil nil 259)) :pre-blank 0 :post-blank 0 :post-affiliated 113 :tag nil :mode item :granularity nil :parent (plain-list (:type unordered :begin 113 :end 259 :contents-begin 113 :contents-end 259 :structure ((113 0 "- " nil nil nil 147) (147 0 "- " nil nil nil 209) (209 0 "- " nil nil nil 259)) :post-blank 0 :post-affiliated 113 :mode planning :granularity nil :parent (section (:begin 113 :end 260 :contents-begin 113 :contents-end 259 :robust-begin 113 :robust-end 257 :post-blank 1 :post-affiliated 113 :mode section :granularity nil :parent (headline (:raw-value "Table of Contents" :begin 35 :end 260 :pre-blank 0 :contents-begin 113 :contents-end 259 :robust-begin 115 :robust-end 257 :level 1 :priority nil :tags ("TOC") :todo-keyword nil :todo-type nil :post-blank 1 :footnote-section-p nil :archivedp nil :commentedp nil :post-affiliated 35 :title (#("Table of Contents" 0 17 (:parent #101))) :mode nil :granularity nil :parent (org-data (:begin 1 :contents-begin 1 :contents-end 2817 :end 2817 :robust-begin 3 :robust-end 2815 :post-blank 0 :post-affiliated 1 :path nil :mode org-data :CATEGORY nil :granularity nil) (section (:begin 1 :end 35 :contents-begin 1 :contents-end 34 :robust-begin 1 :robust-end 32 :post-blank 1 :post-affiliated 1 :mode first-section :granularity nil :parent #147) (keyword (:key "TITLE" :value "Genenetwork2 Dockerized" :begin 1 :end 34 :post-blank 0 :post-affiliated 1 :mode top-comment :granularity nil :parent #150))) #101 (headline (:raw-value "Introduction" :begin 260 :end 926 :pre-blank 1 :contents-begin 276 :contents-end 925 :robust-begin 278 :robust-end 923 :level 1 :priority nil :tags nil :todo-keyword nil :todo-type nil :post-blank 1 :footnote-section-p nil :archivedp nil :commentedp nil :post-affiliated 260 :title (#("Introduction" 0 12 (:parent #152))) :mode nil :granularity nil :parent #147) (section (:begin 276 :end 926 :contents-begin 276 :contents-end 925 :robust-begin 276 :robust-end 923 :post-blank 1 :post-affiliated 276 :mode section :granularity nil :parent #152) (paragraph (:begin 276 :end 600 :contents-begin 276 :contents-end 599 :post-blank 1 :post-affiliated 276 :mode planning :granularity nil :parent #155) #("The CI(Continuous Integration) system for Genenetwork2 uses " 0 60 (:parent #158)) (link (:type "https" :path "//github.com/features/actions" :format bracket :raw-link "https://github.com/features/actions" :application nil :search-option nil :begin 336 :end 391 :contents-begin 375 :contents-end 389 :post-blank 0 :parent #158) #("Github\nActions" 0 14 (:parent #162))) #(". As such, it's important to have a way to run tests using\nfacilities provided by GUIX in a reproducible way. This project\nleverages GUIX to generate a docker container from which the unittests\nare ran from.\n" 0 208 (:parent #158))) (paragraph (:begin 600 :end 830 :contents-begin 600 :contents-end 829 :post-blank 1 :post-affiliated 600 :mode nil :granularity nil :parent #155) #("Find instructions on how to set docker up inside GUIX " 0 54 (:parent #159)) (link (:type "https" :path "//github.com/pjotrp/guix-notes/blob/master/CONTAINERS.org#run-docker" :format bracket :raw-link "https://github.com/pjotrp/guix-notes/blob/master/CONTAINERS.org#run-docker" :application nil :search-option nil :begin 654 :end 738 :contents-begin 732 :contents-end 736 :post-blank 0 :parent #159) #("here" 0 4 (:parent #163))) #(". This\ndocument will not get into that. It's assumed that you have a working\ndocker setup.\n" 0 91 (:parent #159))) (paragraph (:begin 830 :end 925 :contents-begin 830 :contents-end 925 :post-blank 0 :post-affiliated 830 :mode nil :granularity nil :parent #155) #("The rest of this document outlines how the docker container used in\nthe CI builds was created.\n" 0 95 (:parent #160))))) (headline (:raw-value "Creating the Docker Images" :begin 926 :end 2194 :pre-blank 1 :contents-begin 956 :contents-end 2193 :robust-begin 958 :robust-end 2191 :level 1 :priority nil :tags nil :todo-keyword nil :todo-type nil :post-blank 1 :footnote-section-p nil :archivedp nil :commentedp nil :post-affiliated 926 :title (#("Creating the Docker Images" 0 26 (:parent #153))) :mode nil :granularity nil :parent #147) (section (:begin 956 :end 2194 :contents-begin 956 :contents-end 2193 :robust-begin 956 :robust-end 2191 :post-blank 1 :post-affiliated 956 :mode section :granularity nil :parent #153) (paragraph (:begin 956 :end 1071 :contents-begin 956 :contents-end 1070 :post-blank 1 :post-affiliated 956 :mode planning :granularity nil :parent #156) #("The general idea is that GUIX is used to generate a set of binaries,\nwhich will be added to a base mariaDB image.\n" 0 114 (:parent #159))) (paragraph (:begin 1071 :end 1117 :contents-begin 1071 :contents-end 1116 :post-blank 1 :post-affiliated 1071 :mode nil :granularity nil :parent #156) #("First create the gn2 tar archive by running:\n" 0 45 (:parent #160))) (src-block (:language "sh" :switches nil :parameters nil :begin 1117 :end 1343 :number-lines nil :preserve-indent nil :retain-labels t :use-labels t :label-fmt nil :value "env GUIX_PACKAGE_PATH=\"/home/bonface/projects/guix-bioinformatics:/home/bonface/projects/guix-past/modules\" \\\n ./pre-inst-env guix pack --no-grafts\\\n -S /gn2-profile=/ \\\n screen genenetwork2\n" :post-blank 1 :post-affiliated 1117 :mode nil :granularity nil :parent #156)) (paragraph (:begin 1343 :end 1387 :contents-begin 1343 :contents-end 1386 :post-blank 1 :post-affiliated 1343 :mode nil :granularity nil :parent #156) #("The output will look something similar to:\n" 0 43 (:parent #162))) (fixed-width (:begin 1387 :end 1454 :value "/gnu/store/x3m77vwaqcwba24p5s4lrb7w2ii16lj9-tarball-pack.tar.gz" :post-blank 2 :post-affiliated 1387 :mode nil :granularity nil :parent #156)) (paragraph (:begin 1454 :end 1640 :contents-begin 1454 :contents-end 1639 :post-blank 1 :post-affiliated 1454 :mode nil :granularity nil :parent #156) #("Now create a folder from which will host the following dockerfile. You\ncan name this file Dockerfile. Note that mariadb is the base image\nsince it already has mariadb installed for us.\n" 0 185 (:parent #164))) (src-block (:language "conf" :switches nil :parameters nil :begin 1640 :end 1847 :number-lines nil :preserve-indent nil :retain-labels t :use-labels t :label-fmt nil :value "FROM mariadb:latest\n\nCOPY ./gn2.tar.gz /tmp/gn2.tar.gz\nRUN tar -xzf /tmp/gn2.tar.gz -C / && rm -f /tmp/gn2.tar.gz && \\\n mkdir -p /usr/local/mysql /genotype_files/genotype/json\n" :post-blank 1 :post-affiliated 1640 :mode nil :granularity nil :parent #156)) (paragraph (:begin 1847 :end 1895 :contents-begin 1847 :contents-end 1894 :post-blank 1 :post-affiliated 1847 :mode nil :granularity nil :parent #156) #("Build the image(Note the fullstop at the end):\n" 0 47 (:parent #166))) (fixed-width (:begin 1895 :end 1955 :value "sudo docker build -t genenetwork2:latest -f Dockerfile ." :post-blank 2 :post-affiliated 1895 :mode nil :granularity nil :parent #156)) (paragraph (:begin 1955 :end 2009 :contents-begin 1955 :contents-end 2008 :post-blank 1 :post-affiliated 1955 :mode nil :granularity nil :parent #156) #("To load the image interactively you've just created:\n" 0 53 (:parent #168))) (fixed-width (:begin 2009 :end 2054 :value "docker run -ti \"genenetwork2:latest\" bash" :post-blank 2 :post-affiliated 2009 :mode nil :granularity nil :parent #156)) (paragraph (:begin 2054 :end 2141 :contents-begin 2054 :contents-end 2140 :post-blank 1 :post-affiliated 2054 :mode nil :granularity nil :parent #156) #("Assuming you have a docker instance running, you could always run\ncommands in it e.g:\n" 0 86 (:parent #170))) (fixed-width (:begin 2141 :end 2193 :value "docker run \"genenetwork2:latest\" python --version" :post-blank 1 :post-affiliated 2141 :mode nil :granularity nil :parent #156)))) (headline (:raw-value "Pushing to DockerHub" :begin 2194 :end 2817 :pre-blank 1 :contents-begin 2218 :contents-end 2817 :robust-begin 2220 :robust-end 2815 :level 1 :priority nil :tags nil :todo-keyword nil :todo-type nil :post-blank 0 :footnote-section-p nil :archivedp nil :commentedp nil :post-affiliated 2194 :title (#("Pushing to DockerHub" 0 20 (:parent #154))) :mode nil :granularity nil :parent #147) (section (:begin 2218 :end 2817 :contents-begin 2218 :contents-end 2817 :robust-begin 2218 :robust-end 2815 :post-blank 0 :post-affiliated 2218 :mode section :granularity nil :parent #154) (paragraph (:begin 2218 :end 2325 :contents-begin 2218 :contents-end 2324 :post-blank 1 :post-affiliated 2218 :mode planning :granularity nil :parent #157) #("We use DockerHub to store the docker images from which we use on our\nCI environment using Github Actions.\n" 0 106 (:parent #160))) (paragraph (:begin 2325 :end 2447 :contents-begin 2325 :contents-end 2446 :post-blank 1 :post-affiliated 2325 :mode nil :granularity nil :parent #157) #("To push to dockerhub, first get the image name by running " 0 58 (:parent #161)) (verbatim (:begin 2383 :end 2398 :post-blank 0 :value "docker\nimages" :parent #161)) #(". Push to dockerhub using a command similar to:\n" 0 48 (:parent #161))) (fixed-width (:begin 2447 :end 2494 :value "docker push bonfacekilz/genenetwork2:latest" :post-blank 2 :post-affiliated 2447 :mode nil :granularity nil :parent #157)) (paragraph (:begin 2494 :end 2537 :contents-begin 2494 :contents-end 2536 :post-blank 1 :post-affiliated 2494 :mode nil :granularity nil :parent #157) #("Right now, we have 2 images on DockerHub:\n" 0 42 (:parent #163))) (plain-list (:type unordered :begin 2537 :end 2817 :contents-begin 2537 :contents-end 2817 :structure ((2537 0 "- " nil nil nil 2701) (2701 0 "- " nil nil nil 2817)) :post-blank 0 :post-affiliated 2537 :mode nil :granularity nil :parent #157) (item (:bullet "- " :begin 2537 :end 2701 :contents-begin 2539 :contents-end 2701 :checkbox nil :counter nil :structure ((2537 0 "- " nil nil nil 2701) (2701 0 "- " nil nil nil 2817)) :pre-blank 0 :post-blank 0 :post-affiliated 2537 :tag nil :mode item :granularity nil :parent #164) (paragraph (:begin 2539 :end 2701 :contents-begin 2539 :contents-end 2701 :post-blank 0 :post-affiliated 2539 :mode nil :granularity nil :parent #167) (link (:type "https" :path "//hub.docker.com/repository/docker/bonfacekilz/python2-genenetwork2" :format plain :raw-link "https://hub.docker.com/repository/docker/bonfacekilz/python2-genenetwork2" :application nil :search-option nil :begin 2539 :end 2612 :contents-begin nil :contents-end nil :post-blank 0 :parent #170)) #(":\n Contains the python2 version of gn2. Don't use this. Please use the\n python3 image!\n" 0 89 (:parent #170)))) (item (:bullet "- " :begin 2701 :end 2817 :contents-begin 2703 :contents-end 2817 :checkbox nil :counter nil :structure ((2537 0 "- " nil nil nil 2701) (2701 0 "- " nil nil nil 2817)) :pre-blank 0 :post-blank 0 :post-affiliated 2701 :tag nil :mode item :granularity nil :parent #164) (paragraph (:begin 2703 :end 2817 :contents-begin 2703 :contents-end 2817 :post-blank 0 :post-affiliated 2703 :mode nil :granularity nil :parent #168) (link (:type "https" :path "//hub.docker.com/repository/docker/bonfacekilz/python3-genenetwork2" :format plain :raw-link "https://hub.docker.com/repository/docker/bonfacekilz/python3-genenetwork2" :application nil :search-option nil :begin 2703 :end 2776 :contents-begin nil :contents-end nil :post-blank 0 :parent #171)) #(":\n Contains the python3 version of gn2.\n" 0 41 (:parent #171))))))))) #77)) #53)) #21 (item (:bullet "- " :begin 147 :end 209 :contents-begin 149 :contents-end 209 :checkbox nil :counter nil :structure ((113 0 "- " nil nil nil 147) (147 0 "- " nil nil nil 209) (209 0 "- " nil nil nil 259)) :pre-blank 0 :post-blank 0 :post-affiliated 147 :tag nil :mode item :granularity nil :parent #53) (paragraph (:begin 149 :end 209 :contents-begin 149 :contents-end 209 :post-blank 0 :post-affiliated 149 :mode nil :granularity nil :parent #57) (link (:type "custom-id" :path "creating-the-docker-images" :format bracket :raw-link "#creating-the-docker-images" :application nil :search-option nil :begin 149 :end 208 :contents-begin 180 :contents-end 206 :post-blank 0 :parent #60) #("Creating the Docker Images" 0 26 (:parent #63))) #("\n" 0 1 (:parent #60)))) (item (:bullet "- " :begin 209 :end 259 :contents-begin 211 :contents-end 259 :checkbox nil :counter nil :structure ((113 0 "- " nil nil nil 147) (147 0 "- " nil nil nil 209) (209 0 "- " nil nil nil 259)) :pre-blank 0 :post-blank 0 :post-affiliated 209 :tag nil :mode item :granularity nil :parent #53) (paragraph (:begin 211 :end 259 :contents-begin 211 :contents-end 259 :post-blank 0 :post-affiliated 211 :mode nil :granularity nil :parent #58) (link (:type "custom-id" :path "pushing-to-dockerhub" :format bracket :raw-link "#pushing-to-dockerhub" :application nil :search-option nil :begin 211 :end 258 :contents-begin 236 :contents-end 256 :post-blank 0 :parent #61) #("Pushing to DockerHub" 0 20 (:parent #64))) #("\n" 0 1 (:parent #61)))))) . #0)) (link (:type "custom-id" :path "introduction" :format bracket :raw-link "#introduction" :application nil :search-option nil :begin 115 :end 146 :contents-begin 132 :contents-end 144 :post-blank 0 :parent #1) #("Introduction" 0 12 (:parent #4))) #("\n" 0 1 (:parent #1)))) "") org-export-data((item (:bullet "- " :begin 113 :end 147 :contents-begin 115 :contents-end 147 :checkbox nil :counter nil :structure ((113 0 "- " nil nil nil 147) (147 0 "- " nil nil nil 209) (209 0 "- " nil nil nil 259)) :pre-blank 0 :post-blank 0 :post-affiliated 113 :tag nil :mode item :granularity nil :parent (plain-list (:type unordered :begin 113 :end 259 :contents-begin 113 :contents-end 259 :structure ((113 0 "- " nil nil nil 147) (147 0 "- " nil nil nil 209) (209 0 "- " nil nil nil 259)) :post-blank 0 :post-affiliated 113 :mode planning :granularity nil :parent (section (:begin 113 :end 260 :contents-begin 113 :contents-end 259 :robust-begin 113 :robust-end 257 :post-blank 1 :post-affiliated 113 :mode section :granularity nil :parent (headline (:raw-value "Table of Contents" :begin 35 :end 260 :pre-blank 0 :contents-begin 113 :contents-end 259 :robust-begin 115 :robust-end 257 :level 1 :priority nil :tags ("TOC") :todo-keyword nil :todo-type nil :post-blank 1 :footnote-section-p nil :archivedp nil :commentedp nil :post-affiliated 35 :title (#("Table of Contents" 0 17 (:parent #80))) :mode nil :granularity nil :parent (org-data (:begin 1 :contents-begin 1 :contents-end 2817 :end 2817 :robust-begin 3 :robust-end 2815 :post-blank 0 :post-affiliated 1 :path nil :mode org-data :CATEGORY nil :granularity nil) (section (:begin 1 :end 35 :contents-begin 1 :contents-end 34 :robust-begin 1 :robust-end 32 :post-blank 1 :post-affiliated 1 :mode first-section :granularity nil :parent #126) (keyword (:key "TITLE" :value "Genenetwork2 Dockerized" :begin 1 :end 34 :post-blank 0 :post-affiliated 1 :mode top-comment :granularity nil :parent #129))) #80 (headline (:raw-value "Introduction" :begin 260 :end 926 :pre-blank 1 :contents-begin 276 :contents-end 925 :robust-begin 278 :robust-end 923 :level 1 :priority nil :tags nil :todo-keyword nil :todo-type nil :post-blank 1 :footnote-section-p nil :archivedp nil :commentedp nil :post-affiliated 260 :title (#("Introduction" 0 12 (:parent #131))) :mode nil :granularity nil :parent #126) (section (:begin 276 :end 926 :contents-begin 276 :contents-end 925 :robust-begin 276 :robust-end 923 :post-blank 1 :post-affiliated 276 :mode section :granularity nil :parent #131) (paragraph (:begin 276 :end 600 :contents-begin 276 :contents-end 599 :post-blank 1 :post-affiliated 276 :mode planning :granularity nil :parent #134) #("The CI(Continuous Integration) system for Genenetwork2 uses " 0 60 (:parent #137)) (link (:type "https" :path "//github.com/features/actions" :format bracket :raw-link "https://github.com/features/actions" :application nil :search-option nil :begin 336 :end 391 :contents-begin 375 :contents-end 389 :post-blank 0 :parent #137) #("Github\nActions" 0 14 (:parent #141))) #(". As such, it's important to have a way to run tests using\nfacilities provided by GUIX in a reproducible way. This project\nleverages GUIX to generate a docker container from which the unittests\nare ran from.\n" 0 208 (:parent #137))) (paragraph (:begin 600 :end 830 :contents-begin 600 :contents-end 829 :post-blank 1 :post-affiliated 600 :mode nil :granularity nil :parent #134) #("Find instructions on how to set docker up inside GUIX " 0 54 (:parent #138)) (link (:type "https" :path "//github.com/pjotrp/guix-notes/blob/master/CONTAINERS.org#run-docker" :format bracket :raw-link "https://github.com/pjotrp/guix-notes/blob/master/CONTAINERS.org#run-docker" :application nil :search-option nil :begin 654 :end 738 :contents-begin 732 :contents-end 736 :post-blank 0 :parent #138) #("here" 0 4 (:parent #142))) #(". This\ndocument will not get into that. It's assumed that you have a working\ndocker setup.\n" 0 91 (:parent #138))) (paragraph (:begin 830 :end 925 :contents-begin 830 :contents-end 925 :post-blank 0 :post-affiliated 830 :mode nil :granularity nil :parent #134) #("The rest of this document outlines how the docker container used in\nthe CI builds was created.\n" 0 95 (:parent #139))))) (headline (:raw-value "Creating the Docker Images" :begin 926 :end 2194 :pre-blank 1 :contents-begin 956 :contents-end 2193 :robust-begin 958 :robust-end 2191 :level 1 :priority nil :tags nil :todo-keyword nil :todo-type nil :post-blank 1 :footnote-section-p nil :archivedp nil :commentedp nil :post-affiliated 926 :title (#("Creating the Docker Images" 0 26 (:parent #132))) :mode nil :granularity nil :parent #126) (section (:begin 956 :end 2194 :contents-begin 956 :contents-end 2193 :robust-begin 956 :robust-end 2191 :post-blank 1 :post-affiliated 956 :mode section :granularity nil :parent #132) (paragraph (:begin 956 :end 1071 :contents-begin 956 :contents-end 1070 :post-blank 1 :post-affiliated 956 :mode planning :granularity nil :parent #135) #("The general idea is that GUIX is used to generate a set of binaries,\nwhich will be added to a base mariaDB image.\n" 0 114 (:parent #138))) (paragraph (:begin 1071 :end 1117 :contents-begin 1071 :contents-end 1116 :post-blank 1 :post-affiliated 1071 :mode nil :granularity nil :parent #135) #("First create the gn2 tar archive by running:\n" 0 45 (:parent #139))) (src-block (:language "sh" :switches nil :parameters nil :begin 1117 :end 1343 :number-lines nil :preserve-indent nil :retain-labels t :use-labels t :label-fmt nil :value "env GUIX_PACKAGE_PATH=\"/home/bonface/projects/guix-bioinformatics:/home/bonface/projects/guix-past/modules\" \\\n ./pre-inst-env guix pack --no-grafts\\\n -S /gn2-profile=/ \\\n screen genenetwork2\n" :post-blank 1 :post-affiliated 1117 :mode nil :granularity nil :parent #135)) (paragraph (:begin 1343 :end 1387 :contents-begin 1343 :contents-end 1386 :post-blank 1 :post-affiliated 1343 :mode nil :granularity nil :parent #135) #("The output will look something similar to:\n" 0 43 (:parent #141))) (fixed-width (:begin 1387 :end 1454 :value "/gnu/store/x3m77vwaqcwba24p5s4lrb7w2ii16lj9-tarball-pack.tar.gz" :post-blank 2 :post-affiliated 1387 :mode nil :granularity nil :parent #135)) (paragraph (:begin 1454 :end 1640 :contents-begin 1454 :contents-end 1639 :post-blank 1 :post-affiliated 1454 :mode nil :granularity nil :parent #135) #("Now create a folder from which will host the following dockerfile. You\ncan name this file Dockerfile. Note that mariadb is the base image\nsince it already has mariadb installed for us.\n" 0 185 (:parent #143))) (src-block (:language "conf" :switches nil :parameters nil :begin 1640 :end 1847 :number-lines nil :preserve-indent nil :retain-labels t :use-labels t :label-fmt nil :value "FROM mariadb:latest\n\nCOPY ./gn2.tar.gz /tmp/gn2.tar.gz\nRUN tar -xzf /tmp/gn2.tar.gz -C / && rm -f /tmp/gn2.tar.gz && \\\n mkdir -p /usr/local/mysql /genotype_files/genotype/json\n" :post-blank 1 :post-affiliated 1640 :mode nil :granularity nil :parent #135)) (paragraph (:begin 1847 :end 1895 :contents-begin 1847 :contents-end 1894 :post-blank 1 :post-affiliated 1847 :mode nil :granularity nil :parent #135) #("Build the image(Note the fullstop at the end):\n" 0 47 (:parent #145))) (fixed-width (:begin 1895 :end 1955 :value "sudo docker build -t genenetwork2:latest -f Dockerfile ." :post-blank 2 :post-affiliated 1895 :mode nil :granularity nil :parent #135)) (paragraph (:begin 1955 :end 2009 :contents-begin 1955 :contents-end 2008 :post-blank 1 :post-affiliated 1955 :mode nil :granularity nil :parent #135) #("To load the image interactively you've just created:\n" 0 53 (:parent #147))) (fixed-width (:begin 2009 :end 2054 :value "docker run -ti \"genenetwork2:latest\" bash" :post-blank 2 :post-affiliated 2009 :mode nil :granularity nil :parent #135)) (paragraph (:begin 2054 :end 2141 :contents-begin 2054 :contents-end 2140 :post-blank 1 :post-affiliated 2054 :mode nil :granularity nil :parent #135) #("Assuming you have a docker instance running, you could always run\ncommands in it e.g:\n" 0 86 (:parent #149))) (fixed-width (:begin 2141 :end 2193 :value "docker run \"genenetwork2:latest\" python --version" :post-blank 1 :post-affiliated 2141 :mode nil :granularity nil :parent #135)))) (headline (:raw-value "Pushing to DockerHub" :begin 2194 :end 2817 :pre-blank 1 :contents-begin 2218 :contents-end 2817 :robust-begin 2220 :robust-end 2815 :level 1 :priority nil :tags nil :todo-keyword nil :todo-type nil :post-blank 0 :footnote-section-p nil :archivedp nil :commentedp nil :post-affiliated 2194 :title (#("Pushing to DockerHub" 0 20 (:parent #133))) :mode nil :granularity nil :parent #126) (section (:begin 2218 :end 2817 :contents-begin 2218 :contents-end 2817 :robust-begin 2218 :robust-end 2815 :post-blank 0 :post-affiliated 2218 :mode section :granularity nil :parent #133) (paragraph (:begin 2218 :end 2325 :contents-begin 2218 :contents-end 2324 :post-blank 1 :post-affiliated 2218 :mode planning :granularity nil :parent #136) #("We use DockerHub to store the docker images from which we use on our\nCI environment using Github Actions.\n" 0 106 (:parent #139))) (paragraph (:begin 2325 :end 2447 :contents-begin 2325 :contents-end 2446 :post-blank 1 :post-affiliated 2325 :mode nil :granularity nil :parent #136) #("To push to dockerhub, first get the image name by running " 0 58 (:parent #140)) (verbatim (:begin 2383 :end 2398 :post-blank 0 :value "docker\nimages" :parent #140)) #(". Push to dockerhub using a command similar to:\n" 0 48 (:parent #140))) (fixed-width (:begin 2447 :end 2494 :value "docker push bonfacekilz/genenetwork2:latest" :post-blank 2 :post-affiliated 2447 :mode nil :granularity nil :parent #136)) (paragraph (:begin 2494 :end 2537 :contents-begin 2494 :contents-end 2536 :post-blank 1 :post-affiliated 2494 :mode nil :granularity nil :parent #136) #("Right now, we have 2 images on DockerHub:\n" 0 42 (:parent #142))) (plain-list (:type unordered :begin 2537 :end 2817 :contents-begin 2537 :contents-end 2817 :structure ((2537 0 "- " nil nil nil 2701) (2701 0 "- " nil nil nil 2817)) :post-blank 0 :post-affiliated 2537 :mode nil :granularity nil :parent #136) (item (:bullet "- " :begin 2537 :end 2701 :contents-begin 2539 :contents-end 2701 :checkbox nil :counter nil :structure ((2537 0 "- " nil nil nil 2701) (2701 0 "- " nil nil nil 2817)) :pre-blank 0 :post-blank 0 :post-affiliated 2537 :tag nil :mode item :granularity nil :parent #143) (paragraph (:begin 2539 :end 2701 :contents-begin 2539 :contents-end 2701 :post-blank 0 :post-affiliated 2539 :mode nil :granularity nil :parent #146) (link (:type "https" :path "//hub.docker.com/repository/docker/bonfacekilz/python2-genenetwork2" :format plain :raw-link "https://hub.docker.com/repository/docker/bonfacekilz/python2-genenetwork2" :application nil :search-option nil :begin 2539 :end 2612 :contents-begin nil :contents-end nil :post-blank 0 :parent #149)) #(":\n Contains the python2 version of gn2. Don't use this. Please use the\n python3 image!\n" 0 89 (:parent #149)))) (item (:bullet "- " :begin 2701 :end 2817 :contents-begin 2703 :contents-end 2817 :checkbox nil :counter nil :structure ((2537 0 "- " nil nil nil 2701) (2701 0 "- " nil nil nil 2817)) :pre-blank 0 :post-blank 0 :post-affiliated 2701 :tag nil :mode item :granularity nil :parent #143) (paragraph (:begin 2703 :end 2817 :contents-begin 2703 :contents-end 2817 :post-blank 0 :post-affiliated 2703 :mode nil :granularity nil :parent #147) (link (:type "https" :path "//hub.docker.com/repository/docker/bonfacekilz/python3-genenetwork2" :format plain :raw-link "https://hub.docker.com/repository/docker/bonfacekilz/python3-genenetwork2" :application nil :search-option nil :begin 2703 :end 2776 :contents-begin nil :contents-end nil :post-blank 0 :parent #150)) #(":\n Contains the python3 version of gn2.\n" 0 41 (:parent #150))))))))) #56)) #32)) #0 (item (:bullet "- " :begin 147 :end 209 :contents-begin 149 :contents-end 209 :checkbox nil :counter nil :structure ((113 0 "- " nil nil nil 147) (147 0 "- " nil nil nil 209) (209 0 "- " nil nil nil 259)) :pre-blank 0 :post-blank 0 :post-affiliated 147 :tag nil :mode item :granularity nil :parent #32) (paragraph (:begin 149 :end 209 :contents-begin 149 :contents-end 209 :post-blank 0 :post-affiliated 149 :mode nil :granularity nil :parent #36) (link (:type "custom-id" :path "creating-the-docker-images" :format bracket :raw-link "#creating-the-docker-images" :application nil :search-option nil :begin 149 :end 208 :contents-begin 180 :contents-end 206 :post-blank 0 :parent #39) #("Creating the Docker Images" 0 26 (:parent #42))) #("\n" 0 1 (:parent #39)))) (item (:bullet "- " :begin 209 :end 259 :contents-begin 211 :contents-end 259 :checkbox nil :counter nil :structure ((113 0 "- " nil nil nil 147) (147 0 "- " nil nil nil 209) (209 0 "- " nil nil nil 259)) :pre-blank 0 :post-blank 0 :post-affiliated 209 :tag nil :mode item :granularity nil :parent #32) (paragraph (:begin 211 :end 259 :contents-begin 211 :contents-end 259 :post-blank 0 :post-affiliated 211 :mode nil :granularity nil :parent #37) (link (:type "custom-id" :path "pushing-to-dockerhub" :format bracket :raw-link "#pushing-to-dockerhub" :application nil :search-option nil :begin 211 :end 258 :contents-begin 236 :contents-end 256 :post-blank 0 :parent #40) #("Pushing to DockerHub" 0 20 (:parent #43))) #("\n" 0 1 (:parent #40)))))) (paragraph (:begin 115 :end 147 :contents-begin 115 :contents-end 147 :post-blank 0 :post-affiliated 115 :mode nil :granularity nil :parent #0) (link (:type "custom-id" :path "introduction" :format bracket :raw-link "#introduction" :application nil :search-option nil :begin 115 :end 146 :contents-begin 132 :contents-end 144 :post-blank 0 :parent #3) #("Introduction" 0 12 (:parent #6))) #("\n" 0 1 (:parent #3)))) (:export-options (body-only) :back-end #s(org-export-backend :name html :parent nil :transcoders ((bold . org-html-bold) (center-block . org-html-center-block) (clock . org-html-clock) (code . org-html-code) (drawer . org-html-drawer) (dynamic-block . org-html-dynamic-block) (entity . org-html-entity) (example-block . org-html-example-block) (export-block . org-html-export-block) (export-snippet . org-html-export-snippet) (fixed-width . org-html-fixed-width) (footnote-reference . org-html-footnote-reference) (headline . org-html-headline) (horizontal-rule . org-html-horizontal-rule) (inline-src-block . org-html-inline-src-block) (inlinetask . org-html-inlinetask) (inner-template . org-html-inner-template) (italic . org-html-italic) (item . org-html-item) (keyword . org-html-keyword) (latex-environment . org-html-latex-environment) (latex-fragment . org-html-latex-fragment) (line-break . org-html-line-break) (link . org-html-link) (node-property . org-html-node-property) (paragraph . org-html-paragraph) (plain-list . org-html-plain-list) (plain-text . org-html-plain-text) (planning . org-html-planning) (property-drawer . org-html-property-drawer) (quote-block . org-html-quote-block) (radio-target . org-html-radio-target) (section . org-html-section) (special-block . org-html-special-block) (src-block . org-html-src-block) (statistics-cookie . org-html-statistics-cookie) (strike-through . org-html-strike-through) (subscript . org-html-subscript) (superscript . org-html-superscript) (table . org-html-table) (table-cell . org-html-table-cell) (table-row . org-html-table-row) (target . org-html-target) (template . org-html-template) (timestamp . org-html-timestamp) (underline . org-html-underline) (verbatim . org-html-verbatim) (verse-block . org-html-verse-block)) :options ((:html-doctype "HTML_DOCTYPE" nil org-html-doctype) (:html-container "HTML_CONTAINER" nil org-html-container-element) (:html-content-class "HTML_CONTENT_CLASS" nil org-html-content-class) (:description "DESCRIPTION" nil nil newline) (:keywords "KEYWORDS" nil nil space) (:html-html5-fancy nil "html5-fancy" org-html-html5-fancy) (:html-link-use-abs-url nil "html-link-use-abs-url" org-html-link-use-abs-url) (:html-link-home "HTML_LINK_HOME" nil org-html-link-home) (:html-link-up "HTML_LINK_UP" nil org-html-link-up) (:html-mathjax "HTML_MATHJAX" nil "" space) (:html-equation-reference-format "HTML_EQUATION_REFERENCE_FORMAT" nil org-html-equation-reference-format t) (:html-postamble nil "html-postamble" org-html-postamble) (:html-preamble nil "html-preamble" org-html-preamble) (:html-head "HTML_HEAD" nil org-html-head newline) (:html-head-extra "HTML_HEAD_EXTRA" nil org-html-head-extra newline) (:subtitle "SUBTITLE" nil nil parse) (:html-head-include-default-style nil "html-style" org-html-head-include-default-style) (:html-head-include-scripts nil "html-scripts" org-html-head-include-scripts) (:html-allow-name-attribute-in-anchors nil nil org-html-allow-name-attribute-in-anchors) (:html-divs nil nil org-html-divs) (:html-checkbox-type nil nil org-html-checkbox-type) (:html-extension nil nil org-html-extension) (:html-footnote-format nil nil org-html-footnote-format) (:html-footnote-separator nil nil org-html-footnote-separator) (:html-footnotes-section nil nil org-html-footnotes-section) (:html-format-drawer-function nil nil org-html-format-drawer-function) (:html-format-headline-function nil nil org-html-format-headline-function) (:html-format-inlinetask-function nil nil org-html-format-inlinetask-function) (:html-home/up-format nil nil org-html-home/up-format) (:html-indent nil nil org-html-indent) (:html-infojs-options nil nil org-html-infojs-options) (:html-infojs-template nil nil org-html-infojs-template) (:html-inline-image-rules nil nil org-html-inline-image-rules) (:html-link-org-files-as-html nil nil org-html-link-org-files-as-html) (:html-mathjax-options nil nil org-html-mathjax-options) (:html-mathjax-template nil nil org-html-mathjax-template) (:html-metadata-timestamp-format nil nil org-html-metadata-timestamp-format) (:html-postamble-format nil nil org-html-postamble-format) (:html-preamble-format nil nil org-html-preamble-format) (:html-prefer-user-labels nil nil org-html-prefer-user-labels) (:html-self-link-headlines nil nil org-html-self-link-headlines) (:html-table-align-individual-fields nil nil org-html-table-align-individual-fields) (:html-table-caption-above nil nil org-html-table-caption-above) (:html-table-data-tags nil nil org-html-table-data-tags) (:html-table-header-tags nil nil org-html-table-header-tags) (:html-table-use-header-tags-for-first-column nil nil org-html-table-use-header-tags-for-first-column) (:html-tag-class-prefix nil nil org-html-tag-class-prefix) (:html-text-markup-alist nil nil org-html-text-markup-alist) (:html-todo-kwd-class-prefix nil nil org-html-todo-kwd-class-prefix) (:html-toplevel-hlevel nil nil org-html-toplevel-hlevel) (:html-use-infojs nil nil org-html-use-infojs) (:html-validation-link nil nil org-html-validation-link) (:html-viewport nil nil org-html-viewport) (:html-inline-images nil nil org-html-inline-images) (:html-table-attributes nil nil org-html-table-default-attributes) (:html-table-row-open-tag nil nil org-html-table-row-open-tag) (:html-table-row-close-tag nil nil org-html-table-row-close-tag) (:html-xml-declaration nil nil org-html-xml-declaration) (:html-wrap-src-lines nil nil org-html-wrap-src-lines) (:html-klipsify-src nil nil org-html-klipsify-src) (:html-klipse-css nil nil org-html-klipse-css) (:html-klipse-js nil nil org-html-klipse-js) (:html-klipse-selection-script nil nil org-html-klipse-selection-script) (:infojs-opt "INFOJS_OPT" nil nil) (:creator "CREATOR" nil org-html-creator-string) (:with-latex nil "tex" org-html-with-latex) (:latex-header "LATEX_HEADER" nil nil newline)) :filters ((:filter-options . org-html-infojs-install-script) (:filter-parse-tree . org-html-image-link-filter) (:filter-final-output . org-html-final-function)) :blocks nil :menu (104 "Export to HTML" ((72 "As HTML buffer" org-html-export-as-html) (104 "As HTML file" org-html-export-to-html) (111 "As HTML file and open" (lambda (a s v b) (if a (org-html-export-to-html t s v b) (org-open-file (org-html-export-to-html nil s v b)))))))) :translate-alist ((bold . org-html-bold) (center-block . org-html-center-block) (clock . org-html-clock) (code . org-html-code) (drawer . org-html-drawer) (dynamic-block . org-html-dynamic-block) (entity . org-html-entity) (example-block . org-html-example-block) (export-block . org-html-export-block) (export-snippet . org-html-export-snippet) (fixed-width . org-html-fixed-width) (footnote-reference . org-html-footnote-reference) (headline . org-html-headline) (horizontal-rule . org-html-horizontal-rule) (inline-src-block . org-html-inline-src-block) (inlinetask . org-html-inlinetask) (inner-template . org-html-inner-template) (italic . org-html-italic) (item . org-html-item) (keyword . org-html-keyword) (latex-environment . org-html-latex-environment) (latex-fragment . org-html-latex-fragment) (line-break . org-html-line-break) (link . org-html-link) (node-property . org-html-node-property) (paragraph . org-html-paragraph) (plain-list . org-html-plain-list) (plain-text . org-html-plain-text) (planning . org-html-planning) (property-drawer . org-html-property-drawer) (quote-block . org-html-quote-block) (radio-target . org-html-radio-target) (section . org-html-section) (special-block . org-html-special-block) (src-block . org-html-src-block) (statistics-cookie . org-html-statistics-cookie) (strike-through . org-html-strike-through) (subscript . org-html-subscript) (superscript . org-html-superscript) (table . org-html-table) (table-cell . org-html-table-cell) (table-row . org-html-table-row) (target . org-html-target) (template . org-html-template) (timestamp . org-html-timestamp) (underline . org-html-underline) (verbatim . org-html-verbatim) (verse-block . org-html-verse-block)) :exported-data # :input-buffer " *temp*" :input-file nil :html-doctype "xhtml-strict" :html-container "div" :html-content-class "content" :description nil :keywords nil :html-html5-fancy nil :html-link-use-abs-url nil :html-link-home "" :html-link-up "" :html-mathjax "" :html-equation-reference-format "\\eqref{%s}" :html-postamble auto :html-preamble t :html-head "" :html-head-extra "" :subtitle nil :html-head-include-default-style t :html-head-include-scripts nil :html-allow-name-attribute-in-anchors nil :html-divs ((preamble "div" "preamble") (content "div" "content") (postamble "div" "postamble")) :html-checkbox-type ascii :html-extension "html" :html-footnote-format "%s" :html-footnote-separator ", " :html-footnotes-section "
\n

%s:

\n
\n%s\n
\n
" :html-format-drawer-function #f(compiled-function (name contents) #) :html-format-headline-function org-html-format-headline-default-function :html-format-inlinetask-function org-html-format-inlinetask-default-function :html-home/up-format "
\n UP \n |\n HOME \n
" :html-indent nil :html-infojs-options ((path . "https://orgmode.org/org-info.js") (view . "info") (toc . :with-toc) (ftoc . "0") (tdepth . "max") (sdepth . "max") (mouse . "underline") (buttons . "0") (ltoc . "1") (up . :html-link-up) (home . :html-link-home)) :html-infojs-template "\n\n" :html-inline-image-rules (("file" . "\\(?:\\.\\(?:gif\\|jp\\(?:e?g\\)\\|png\\|svg\\|webp\\)\\)") ("http" . "\\(?:\\.\\(?:gif\\|jp\\(?:e?g\\)\\|png\\|svg\\|webp\\)\\)") ("https" . "\\(?:\\.\\(?:gif\\|jp\\(?:e?g\\)\\|png\\|svg\\|webp\\)\\)")) :html-link-org-files-as-html t :html-mathjax-options ((path "https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-mml-chtml.js") (scale 1.0) (align "center") (font "mathjax-modern") (overflow "overflow") (tags "ams") (indent "0em") (multlinewidth "85%") (tagindent ".8em") (tagside "right")) :html-mathjax-template "\n\n\n" :html-metadata-timestamp-format "%Y-%m-%d %a %H:%M" :html-postamble-format (("en" "

Author: %a (%e)

\n

Date: %d

\n

%c

\n

%v

")) :html-preamble-format (("en" "")) :html-prefer-user-labels nil :html-self-link-headlines nil :html-table-align-individual-fields t :html-table-caption-above t :html-table-data-tags ("" . "") :html-table-header-tags ("" . "") :html-table-use-header-tags-for-first-column nil :html-tag-class-prefix "" :html-text-markup-alist ((bold . "%s") (code . "%s") (italic . "%s") (strike-through . "%s") (underline . "%s") (verbatim . "%s")) :html-todo-kwd-class-prefix "" :html-toplevel-hlevel 2 :html-use-infojs when-configured :html-validation-link "Validate" :html-viewport ((width "device-width") (initial-scale "1") (minimum-scale "") (maximum-scale "") (user-scalable "")) :html-inline-images t :html-table-attributes (:border "2" :cellspacing "0" :cellpadding "6" :rules "groups" :frame "hsides") :html-table-row-open-tag "" :html-table-row-close-tag "" :html-xml-declaration (("html" . "") ("php" . "\"; ?>")) :html-wrap-src-lines nil :html-klipsify-src nil :html-klipse-css "https://storage.googleapis.com/app.klipse.tech/css/codemirror.css" :html-klipse-js "https://storage.googleapis.com/app.klipse.tech/plugin_prod/js/klipse_plugin.min.js" :html-klipse-selection-script "window.klipse_settings = {selector_eval_html: '.src-html',\n selector_eval_js: '.src-js',\n selector_eval_python_client: '.src-python',\n selector_eval_scheme: '.src-scheme',\n selector: '.src-clojure',\n selector_eval_ruby: '.src-ruby'};" :infojs-opt nil :creator "Emacs 29.4 (Org mode 9.6.15)" :with-latex t :latex-header nil :title (#("Genenetwork2 Dockerized" 0 23 (:parent #148))) :date nil :author (#("unknown" 0 7 (:parent #152))) :email "unknown@genenetwork-development" :language "en" :select-tags ("export") :exclude-tags ("noexport") :headline-levels 3 :preserve-breaks nil :section-numbers nil :time-stamp-file t :with-archived-trees headline :with-author t :with-broken-links nil :with-clocks nil :with-creator nil :with-date t :with-drawers (not "LOGBOOK") :with-email nil :with-emphasize t :with-entities t :with-fixed-width t :with-footnotes t :with-inlinetasks t :with-planning nil :with-priority nil :with-properties nil :with-smart-quotes nil :with-special-strings t :with-statistics-cookies t :with-sub-superscript t :with-toc nil :with-tables t :with-tags t :with-tasks t :with-timestamps t :with-title t :with-todo-keywords t :cite-export (basic nil nil) :bibliography nil :filter-body nil :filter-bold nil :filter-babel-call nil :filter-center-block nil :filter-clock nil :filter-code nil :filter-diary-sexp nil :filter-drawer nil :filter-dynamic-block nil :filter-entity nil :filter-example-block nil :filter-export-block nil :filter-export-snippet nil :filter-final-output (org-html-final-function) :filter-fixed-width nil :filter-footnote-definition nil :filter-footnote-reference nil :filter-headline nil :filter-horizontal-rule nil :filter-inline-babel-call nil :filter-inline-src-block nil :filter-inlinetask nil :filter-italic nil :filter-item nil :filter-keyword nil :filter-latex-environment nil :filter-latex-fragment nil :filter-line-break nil :filter-link nil :filter-node-property nil :filter-options (org-html-infojs-install-script) :filter-paragraph nil :filter-parse-tree (org-html-image-link-filter) :filter-plain-list nil :filter-plain-text nil :filter-planning nil :filter-property-drawer nil :filter-quote-block nil :filter-radio-target nil :filter-section nil :filter-special-block nil :filter-src-block nil :filter-statistics-cookie nil :filter-strike-through nil :filter-subscript nil :filter-superscript nil :filter-table nil :filter-table-cell nil :filter-table-row nil :filter-target nil :filter-timestamp nil :filter-underline nil :filter-verbatim nil :filter-verse-block nil :ignore-list nil :parse-tree (org-data (:begin 1 :contents-begin 1 :contents-end 2817 :end 2817 :robust-begin 3 :robust-end 2815 :post-blank 0 :post-affiliated 1 :path nil :mode org-data :CATEGORY nil :granularity nil) (section (:begin 1 :end 35 :contents-begin 1 :contents-end 34 :robust-begin 1 :robust-end 32 :post-blank 1 :post-affiliated 1 :mode first-section :granularity nil :parent #338) (keyword (:key "TITLE" :value "Genenetwork2 Dockerized" :begin 1 :end 34 :post-blank 0 :post-affiliated 1 :mode top-comment :granularity nil :parent #341))) (headline (:raw-value "Table of Contents" :begin 35 :end 260 :pre-blank 0 :contents-begin 113 :contents-end 259 :robust-begin 115 :robust-end 257 :level 1 :priority nil :tags ("TOC") :todo-keyword nil :todo-type nil :post-blank 1 :footnote-section-p nil :archivedp nil :commentedp nil :post-affiliated 35 :title (#("Table of Contents" 0 17 (:parent #342))) :mode nil :granularity nil :parent #338) (section (:begin 113 :end 260 :contents-begin 113 :contents-end 259 :robust-begin 113 :robust-end 257 :post-blank 1 :post-affiliated 113 :mode section :granularity nil :parent #342) (plain-list (:type unordered :begin 113 :end 259 :contents-begin 113 :contents-end 259 :structure ((113 0 "- " nil nil nil 147) (147 0 "- " nil nil nil 209) (209 0 "- " nil nil nil 259)) :post-blank 0 :post-affiliated 113 :mode planning :granularity nil :parent #345) (item (:bullet "- " :begin 113 :end 147 :contents-begin 115 :contents-end 147 :checkbox nil :counter nil :structure ((113 0 "- " nil nil nil 147) (147 0 "- " nil nil nil 209) (209 0 "- " nil nil nil 259)) :pre-blank 0 :post-blank 0 :post-affiliated 113 :tag nil :mode item :granularity nil :parent #348) (paragraph (:begin 115 :end 147 :contents-begin 115 :contents-end 147 :post-blank 0 :post-affiliated 115 :mode nil :granularity nil :parent #351) (link (:type "custom-id" :path "introduction" :format bracket :raw-link "#introduction" :application nil :search-option nil :begin 115 :end 146 :contents-begin 132 :contents-end 144 :post-blank 0 :parent #354) #("Introduction" 0 12 (:parent #357))) #("\n" 0 1 (:parent #354)))) (item (:bullet "- " :begin 147 :end 209 :contents-begin 149 :contents-end 209 :checkbox nil :counter nil :structure ((113 0 "- " nil nil nil 147) (147 0 "- " nil nil nil 209) (209 0 "- " nil nil nil 259)) :pre-blank 0 :post-blank 0 :post-affiliated 147 :tag nil :mode item :granularity nil :parent #348) (paragraph (:begin 149 :end 209 :contents-begin 149 :contents-end 209 :post-blank 0 :post-affiliated 149 :mode nil :granularity nil :parent #352) (link (:type "custom-id" :path "creating-the-docker-images" :format bracket :raw-link "#creating-the-docker-images" :application nil :search-option nil :begin 149 :end 208 :contents-begin 180 :contents-end 206 :post-blank 0 :parent #355) #("Creating the Docker Images" 0 26 (:parent #358))) #("\n" 0 1 (:parent #355)))) (item (:bullet "- " :begin 209 :end 259 :contents-begin 211 :contents-end 259 :checkbox nil :counter nil :structure ((113 0 "- " nil nil nil 147) (147 0 "- " nil nil nil 209) (209 0 "- " nil nil nil 259)) :pre-blank 0 :post-blank 0 :post-affiliated 209 :tag nil :mode item :granularity nil :parent #348) (paragraph (:begin 211 :end 259 :contents-begin 211 :contents-end 259 :post-blank 0 :post-affiliated 211 :mode nil :granularity nil :parent #353) (link (:type "custom-id" :path "pushing-to-dockerhub" :format bracket :raw-link "#pushing-to-dockerhub" :application nil :search-option nil :begin 211 :end 258 :contents-begin 236 :contents-end 256 :post-blank 0 :parent #356) #("Pushing to DockerHub" 0 20 (:parent #359))) #("\n" 0 1 (:parent #356))))))) (headline (:raw-value "Introduction" :begin 260 :end 926 :pre-blank 1 :contents-begin 276 :contents-end 925 :robust-begin 278 :robust-end 923 :level 1 :priority nil :tags nil :todo-keyword nil :todo-type nil :post-blank 1 :footnote-section-p nil :archivedp nil :commentedp nil :post-affiliated 260 :title (#("Introduction" 0 12 (:parent #343))) :mode nil :granularity nil :parent #338) (section (:begin 276 :end 926 :contents-begin 276 :contents-end 925 :robust-begin 276 :robust-end 923 :post-blank 1 :post-affiliated 276 :mode section :granularity nil :parent #343) (paragraph (:begin 276 :end 600 :contents-begin 276 :contents-end 599 :post-blank 1 :post-affiliated 276 :mode planning :granularity nil :parent #346) #("The CI(Continuous Integration) system for Genenetwork2 uses " 0 60 (:parent #349)) (link (:type "https" :path "//github.com/features/actions" :format bracket :raw-link "https://github.com/features/actions" :application nil :search-option nil :begin 336 :end 391 :contents-begin 375 :contents-end 389 :post-blank 0 :parent #349) #("Github\nActions" 0 14 (:parent #353))) #(". As such, it's important to have a way to run tests using\nfacilities provided by GUIX in a reproducible way. This project\nleverages GUIX to generate a docker container from which the unittests\nare ran from.\n" 0 208 (:parent #349))) (paragraph (:begin 600 :end 830 :contents-begin 600 :contents-end 829 :post-blank 1 :post-affiliated 600 :mode nil :granularity nil :parent #346) #("Find instructions on how to set docker up inside GUIX " 0 54 (:parent #350)) (link (:type "https" :path "//github.com/pjotrp/guix-notes/blob/master/CONTAINERS.org#run-docker" :format bracket :raw-link "https://github.com/pjotrp/guix-notes/blob/master/CONTAINERS.org#run-docker" :application nil :search-option nil :begin 654 :end 738 :contents-begin 732 :contents-end 736 :post-blank 0 :parent #350) #("here" 0 4 (:parent #354))) #(". This\ndocument will not get into that. It's assumed that you have a working\ndocker setup.\n" 0 91 (:parent #350))) (paragraph (:begin 830 :end 925 :contents-begin 830 :contents-end 925 :post-blank 0 :post-affiliated 830 :mode nil :granularity nil :parent #346) #("The rest of this document outlines how the docker container used in\nthe CI builds was created.\n" 0 95 (:parent #351))))) (headline (:raw-value "Creating the Docker Images" :begin 926 :end 2194 :pre-blank 1 :contents-begin 956 :contents-end 2193 :robust-begin 958 :robust-end 2191 :level 1 :priority nil :tags nil :todo-keyword nil :todo-type nil :post-blank 1 :footnote-section-p nil :archivedp nil :commentedp nil :post-affiliated 926 :title (#("Creating the Docker Images" 0 26 (:parent #344))) :mode nil :granularity nil :parent #338) (section (:begin 956 :end 2194 :contents-begin 956 :contents-end 2193 :robust-begin 956 :robust-end 2191 :post-blank 1 :post-affiliated 956 :mode section :granularity nil :parent #344) (paragraph (:begin 956 :end 1071 :contents-begin 956 :contents-end 1070 :post-blank 1 :post-affiliated 956 :mode planning :granularity nil :parent #347) #("The general idea is that GUIX is used to generate a set of binaries,\nwhich will be added to a base mariaDB image.\n" 0 114 (:parent #350))) (paragraph (:begin 1071 :end 1117 :contents-begin 1071 :contents-end 1116 :post-blank 1 :post-affiliated 1071 :mode nil :granularity nil :parent #347) #("First create the gn2 tar archive by running:\n" 0 45 (:parent #351))) (src-block (:language "sh" :switches nil :parameters nil :begin 1117 :end 1343 :number-lines nil :preserve-indent nil :retain-labels t :use-labels t :label-fmt nil :value "env GUIX_PACKAGE_PATH=\"/home/bonface/projects/guix-bioinformatics:/home/bonface/projects/guix-past/modules\" \\\n ./pre-inst-env guix pack --no-grafts\\\n -S /gn2-profile=/ \\\n screen genenetwork2\n" :post-blank 1 :post-affiliated 1117 :mode nil :granularity nil :parent #347)) (paragraph (:begin 1343 :end 1387 :contents-begin 1343 :contents-end 1386 :post-blank 1 :post-affiliated 1343 :mode nil :granularity nil :parent #347) #("The output will look something similar to:\n" 0 43 (:parent #353))) (fixed-width (:begin 1387 :end 1454 :value "/gnu/store/x3m77vwaqcwba24p5s4lrb7w2ii16lj9-tarball-pack.tar.gz" :post-blank 2 :post-affiliated 1387 :mode nil :granularity nil :parent #347)) (paragraph (:begin 1454 :end 1640 :contents-begin 1454 :contents-end 1639 :post-blank 1 :post-affiliated 1454 :mode nil :granularity nil :parent #347) #("Now create a folder from which will host the following dockerfile. You\ncan name this file Dockerfile. Note that mariadb is the base image\nsince it already has mariadb installed for us.\n" 0 185 (:parent #355))) (src-block (:language "conf" :switches nil :parameters nil :begin 1640 :end 1847 :number-lines nil :preserve-indent nil :retain-labels t :use-labels t :label-fmt nil :value "FROM mariadb:latest\n\nCOPY ./gn2.tar.gz /tmp/gn2.tar.gz\nRUN tar -xzf /tmp/gn2.tar.gz -C / && rm -f /tmp/gn2.tar.gz && \\\n mkdir -p /usr/local/mysql /genotype_files/genotype/json\n" :post-blank 1 :post-affiliated 1640 :mode nil :granularity nil :parent #347)) (paragraph (:begin 1847 :end 1895 :contents-begin 1847 :contents-end 1894 :post-blank 1 :post-affiliated 1847 :mode nil :granularity nil :parent #347) #("Build the image(Note the fullstop at the end):\n" 0 47 (:parent #357))) (fixed-width (:begin 1895 :end 1955 :value "sudo docker build -t genenetwork2:latest -f Dockerfile ." :post-blank 2 :post-affiliated 1895 :mode nil :granularity nil :parent #347)) (paragraph (:begin 1955 :end 2009 :contents-begin 1955 :contents-end 2008 :post-blank 1 :post-affiliated 1955 :mode nil :granularity nil :parent #347) #("To load the image interactively you've just created:\n" 0 53 (:parent #359))) (fixed-width (:begin 2009 :end 2054 :value "docker run -ti \"genenetwork2:latest\" bash" :post-blank 2 :post-affiliated 2009 :mode nil :granularity nil :parent #347)) (paragraph (:begin 2054 :end 2141 :contents-begin 2054 :contents-end 2140 :post-blank 1 :post-affiliated 2054 :mode nil :granularity nil :parent #347) #("Assuming you have a docker instance running, you could always run\ncommands in it e.g:\n" 0 86 (:parent #361))) (fixed-width (:begin 2141 :end 2193 :value "docker run \"genenetwork2:latest\" python --version" :post-blank 1 :post-affiliated 2141 :mode nil :granularity nil :parent #347)))) (headline (:raw-value "Pushing to DockerHub" :begin 2194 :end 2817 :pre-blank 1 :contents-begin 2218 :contents-end 2817 :robust-begin 2220 :robust-end 2815 :level 1 :priority nil :tags nil :todo-keyword nil :todo-type nil :post-blank 0 :footnote-section-p nil :archivedp nil :commentedp nil :post-affiliated 2194 :title (#("Pushing to DockerHub" 0 20 (:parent #345))) :mode nil :granularity nil :parent #338) (section (:begin 2218 :end 2817 :contents-begin 2218 :contents-end 2817 :robust-begin 2218 :robust-end 2815 :post-blank 0 :post-affiliated 2218 :mode section :granularity nil :parent #345) (paragraph (:begin 2218 :end 2325 :contents-begin 2218 :contents-end 2324 :post-blank 1 :post-affiliated 2218 :mode planning :granularity nil :parent #348) #("We use DockerHub to store the docker images from which we use on our\nCI environment using Github Actions.\n" 0 106 (:parent #351))) (paragraph (:begin 2325 :end 2447 :contents-begin 2325 :contents-end 2446 :post-blank 1 :post-affiliated 2325 :mode nil :granularity nil :parent #348) #("To push to dockerhub, first get the image name by running " 0 58 (:parent #352)) (verbatim (:begin 2383 :end 2398 :post-blank 0 :value "docker\nimages" :parent #352)) #(". Push to dockerhub using a command similar to:\n" 0 48 (:parent #352))) (fixed-width (:begin 2447 :end 2494 :value "docker push bonfacekilz/genenetwork2:latest" :post-blank 2 :post-affiliated 2447 :mode nil :granularity nil :parent #348)) (paragraph (:begin 2494 :end 2537 :contents-begin 2494 :contents-end 2536 :post-blank 1 :post-affiliated 2494 :mode nil :granularity nil :parent #348) #("Right now, we have 2 images on DockerHub:\n" 0 42 (:parent #354))) (plain-list (:type unordered :begin 2537 :end 2817 :contents-begin 2537 :contents-end 2817 :structure ((2537 0 "- " nil nil nil 2701) (2701 0 "- " nil nil nil 2817)) :post-blank 0 :post-affiliated 2537 :mode nil :granularity nil :parent #348) (item (:bullet "- " :begin 2537 :end 2701 :contents-begin 2539 :contents-end 2701 :checkbox nil :counter nil :structure ((2537 0 "- " nil nil nil 2701) (2701 0 "- " nil nil nil 2817)) :pre-blank 0 :post-blank 0 :post-affiliated 2537 :tag nil :mode item :granularity nil :parent #355) (paragraph (:begin 2539 :end 2701 :contents-begin 2539 :contents-end 2701 :post-blank 0 :post-affiliated 2539 :mode nil :granularity nil :parent #358) (link (:type "https" :path "//hub.docker.com/repository/docker/bonfacekilz/python2-genenetwork2" :format plain :raw-link "https://hub.docker.com/repository/docker/bonfacekilz/python2-genenetwork2" :application nil :search-option nil :begin 2539 :end 2612 :contents-begin nil :contents-end nil :post-blank 0 :parent #361)) #(":\n Contains the python2 version of gn2. Don't use this. Please use the\n python3 image!\n" 0 89 (:parent #361)))) (item (:bullet "- " :begin 2701 :end 2817 :contents-begin 2703 :contents-end 2817 :checkbox nil :counter nil :structure ((2537 0 "- " nil nil nil 2701) (2701 0 "- " nil nil nil 2817)) :pre-blank 0 :post-blank 0 :post-affiliated 2701 :tag nil :mode item :granularity nil :parent #355) (paragraph (:begin 2703 :end 2817 :contents-begin 2703 :contents-end 2817 :post-blank 0 :post-affiliated 2703 :mode nil :granularity nil :parent #359) (link (:type "https" :path "//hub.docker.com/repository/docker/bonfacekilz/python3-genenetwork2" :format plain :raw-link "https://hub.docker.com/repository/docker/bonfacekilz/python3-genenetwork2" :application nil :search-option nil :begin 2703 :end 2776 :contents-begin nil :contents-end nil :post-blank 0 :parent #362)) #(":\n Contains the python3 version of gn2.\n" 0 41 (:parent #362)))))))) :headline-offset 0 :headline-numbering nil :id-alist nil :citations nil :id-local-cache #)) #f(compiled-function (element) #)((item (:bullet "- " :begin 113 :end 147 :contents-begin 115 :contents-end 147 :checkbox nil :counter nil :structure ((113 0 "- " nil nil nil 147) (147 0 "- " nil nil nil 209) (209 0 "- " nil nil nil 259)) :pre-blank 0 :post-blank 0 :post-affiliated 113 :tag nil :mode item :granularity nil :parent (plain-list (:type unordered :begin 113 :end 259 :contents-begin 113 :contents-end 259 :structure ((113 0 "- " nil nil nil 147) (147 0 "- " nil nil nil 209) (209 0 "- " nil nil nil 259)) :post-blank 0 :post-affiliated 113 :mode planning :granularity nil :parent (section (:begin 113 :end 260 :contents-begin 113 :contents-end 259 :robust-begin 113 :robust-end 257 :post-blank 1 :post-affiliated 113 :mode section :granularity nil :parent (headline (:raw-value "Table of Contents" :begin 35 :end 260 :pre-blank 0 :contents-begin 113 :contents-end 259 :robust-begin 115 :robust-end 257 :level 1 :priority nil :tags ("TOC") :todo-keyword nil :todo-type nil :post-blank 1 :footnote-section-p nil :archivedp nil :commentedp nil :post-affiliated 35 :title (#("Table of Contents" 0 17 (:parent #80))) :mode nil :granularity nil :parent (org-data (:begin 1 :contents-begin 1 :contents-end 2817 :end 2817 :robust-begin 3 :robust-end 2815 :post-blank 0 :post-affiliated 1 :path nil :mode org-data :CATEGORY nil :granularity nil) (section (:begin 1 :end 35 :contents-begin 1 :contents-end 34 :robust-begin 1 :robust-end 32 :post-blank 1 :post-affiliated 1 :mode first-section :granularity nil :parent #126) (keyword (:key "TITLE" :value "Genenetwork2 Dockerized" :begin 1 :end 34 :post-blank 0 :post-affiliated 1 :mode top-comment :granularity nil :parent #129))) #80 (headline (:raw-value "Introduction" :begin 260 :end 926 :pre-blank 1 :contents-begin 276 :contents-end 925 :robust-begin 278 :robust-end 923 :level 1 :priority nil :tags nil :todo-keyword nil :todo-type nil :post-blank 1 :footnote-section-p nil :archivedp nil :commentedp nil :post-affiliated 260 :title (#("Introduction" 0 12 (:parent #131))) :mode nil :granularity nil :parent #126) (section (:begin 276 :end 926 :contents-begin 276 :contents-end 925 :robust-begin 276 :robust-end 923 :post-blank 1 :post-affiliated 276 :mode section :granularity nil :parent #131) (paragraph (:begin 276 :end 600 :contents-begin 276 :contents-end 599 :post-blank 1 :post-affiliated 276 :mode planning :granularity nil :parent #134) #("The CI(Continuous Integration) system for Genenetwork2 uses " 0 60 (:parent #137)) (link (:type "https" :path "//github.com/features/actions" :format bracket :raw-link "https://github.com/features/actions" :application nil :search-option nil :begin 336 :end 391 :contents-begin 375 :contents-end 389 :post-blank 0 :parent #137) #("Github\nActions" 0 14 (:parent #141))) #(". As such, it's important to have a way to run tests using\nfacilities provided by GUIX in a reproducible way. This project\nleverages GUIX to generate a docker container from which the unittests\nare ran from.\n" 0 208 (:parent #137))) (paragraph (:begin 600 :end 830 :contents-begin 600 :contents-end 829 :post-blank 1 :post-affiliated 600 :mode nil :granularity nil :parent #134) #("Find instructions on how to set docker up inside GUIX " 0 54 (:parent #138)) (link (:type "https" :path "//github.com/pjotrp/guix-notes/blob/master/CONTAINERS.org#run-docker" :format bracket :raw-link "https://github.com/pjotrp/guix-notes/blob/master/CONTAINERS.org#run-docker" :application nil :search-option nil :begin 654 :end 738 :contents-begin 732 :contents-end 736 :post-blank 0 :parent #138) #("here" 0 4 (:parent #142))) #(". This\ndocument will not get into that. It's assumed that you have a working\ndocker setup.\n" 0 91 (:parent #138))) (paragraph (:begin 830 :end 925 :contents-begin 830 :contents-end 925 :post-blank 0 :post-affiliated 830 :mode nil :granularity nil :parent #134) #("The rest of this document outlines how the docker container used in\nthe CI builds was created.\n" 0 95 (:parent #139))))) (headline (:raw-value "Creating the Docker Images" :begin 926 :end 2194 :pre-blank 1 :contents-begin 956 :contents-end 2193 :robust-begin 958 :robust-end 2191 :level 1 :priority nil :tags nil :todo-keyword nil :todo-type nil :post-blank 1 :footnote-section-p nil :archivedp nil :commentedp nil :post-affiliated 926 :title (#("Creating the Docker Images" 0 26 (:parent #132))) :mode nil :granularity nil :parent #126) (section (:begin 956 :end 2194 :contents-begin 956 :contents-end 2193 :robust-begin 956 :robust-end 2191 :post-blank 1 :post-affiliated 956 :mode section :granularity nil :parent #132) (paragraph (:begin 956 :end 1071 :contents-begin 956 :contents-end 1070 :post-blank 1 :post-affiliated 956 :mode planning :granularity nil :parent #135) #("The general idea is that GUIX is used to generate a set of binaries,\nwhich will be added to a base mariaDB image.\n" 0 114 (:parent #138))) (paragraph (:begin 1071 :end 1117 :contents-begin 1071 :contents-end 1116 :post-blank 1 :post-affiliated 1071 :mode nil :granularity nil :parent #135) #("First create the gn2 tar archive by running:\n" 0 45 (:parent #139))) (src-block (:language "sh" :switches nil :parameters nil :begin 1117 :end 1343 :number-lines nil :preserve-indent nil :retain-labels t :use-labels t :label-fmt nil :value "env GUIX_PACKAGE_PATH=\"/home/bonface/projects/guix-bioinformatics:/home/bonface/projects/guix-past/modules\" \\\n ./pre-inst-env guix pack --no-grafts\\\n -S /gn2-profile=/ \\\n screen genenetwork2\n" :post-blank 1 :post-affiliated 1117 :mode nil :granularity nil :parent #135)) (paragraph (:begin 1343 :end 1387 :contents-begin 1343 :contents-end 1386 :post-blank 1 :post-affiliated 1343 :mode nil :granularity nil :parent #135) #("The output will look something similar to:\n" 0 43 (:parent #141))) (fixed-width (:begin 1387 :end 1454 :value "/gnu/store/x3m77vwaqcwba24p5s4lrb7w2ii16lj9-tarball-pack.tar.gz" :post-blank 2 :post-affiliated 1387 :mode nil :granularity nil :parent #135)) (paragraph (:begin 1454 :end 1640 :contents-begin 1454 :contents-end 1639 :post-blank 1 :post-affiliated 1454 :mode nil :granularity nil :parent #135) #("Now create a folder from which will host the following dockerfile. You\ncan name this file Dockerfile. Note that mariadb is the base image\nsince it already has mariadb installed for us.\n" 0 185 (:parent #143))) (src-block (:language "conf" :switches nil :parameters nil :begin 1640 :end 1847 :number-lines nil :preserve-indent nil :retain-labels t :use-labels t :label-fmt nil :value "FROM mariadb:latest\n\nCOPY ./gn2.tar.gz /tmp/gn2.tar.gz\nRUN tar -xzf /tmp/gn2.tar.gz -C / && rm -f /tmp/gn2.tar.gz && \\\n mkdir -p /usr/local/mysql /genotype_files/genotype/json\n" :post-blank 1 :post-affiliated 1640 :mode nil :granularity nil :parent #135)) (paragraph (:begin 1847 :end 1895 :contents-begin 1847 :contents-end 1894 :post-blank 1 :post-affiliated 1847 :mode nil :granularity nil :parent #135) #("Build the image(Note the fullstop at the end):\n" 0 47 (:parent #145))) (fixed-width (:begin 1895 :end 1955 :value "sudo docker build -t genenetwork2:latest -f Dockerfile ." :post-blank 2 :post-affiliated 1895 :mode nil :granularity nil :parent #135)) (paragraph (:begin 1955 :end 2009 :contents-begin 1955 :contents-end 2008 :post-blank 1 :post-affiliated 1955 :mode nil :granularity nil :parent #135) #("To load the image interactively you've just created:\n" 0 53 (:parent #147))) (fixed-width (:begin 2009 :end 2054 :value "docker run -ti \"genenetwork2:latest\" bash" :post-blank 2 :post-affiliated 2009 :mode nil :granularity nil :parent #135)) (paragraph (:begin 2054 :end 2141 :contents-begin 2054 :contents-end 2140 :post-blank 1 :post-affiliated 2054 :mode nil :granularity nil :parent #135) #("Assuming you have a docker instance running, you could always run\ncommands in it e.g:\n" 0 86 (:parent #149))) (fixed-width (:begin 2141 :end 2193 :value "docker run \"genenetwork2:latest\" python --version" :post-blank 1 :post-affiliated 2141 :mode nil :granularity nil :parent #135)))) (headline (:raw-value "Pushing to DockerHub" :begin 2194 :end 2817 :pre-blank 1 :contents-begin 2218 :contents-end 2817 :robust-begin 2220 :robust-end 2815 :level 1 :priority nil :tags nil :todo-keyword nil :todo-type nil :post-blank 0 :footnote-section-p nil :archivedp nil :commentedp nil :post-affiliated 2194 :title (#("Pushing to DockerHub" 0 20 (:parent #133))) :mode nil :granularity nil :parent #126) (section (:begin 2218 :end 2817 :contents-begin 2218 :contents-end 2817 :robust-begin 2218 :robust-end 2815 :post-blank 0 :post-affiliated 2218 :mode section :granularity nil :parent #133) (paragraph (:begin 2218 :end 2325 :contents-begin 2218 :contents-end 2324 :post-blank 1 :post-affiliated 2218 :mode planning :granularity nil :parent #136) #("We use DockerHub to store the docker images from which we use on our\nCI environment using Github Actions.\n" 0 106 (:parent #139))) (paragraph (:begin 2325 :end 2447 :contents-begin 2325 :contents-end 2446 :post-blank 1 :post-affiliated 2325 :mode nil :granularity nil :parent #136) #("To push to dockerhub, first get the image name by running " 0 58 (:parent #140)) (verbatim (:begin 2383 :end 2398 :post-blank 0 :value "docker\nimages" :parent #140)) #(". Push to dockerhub using a command similar to:\n" 0 48 (:parent #140))) (fixed-width (:begin 2447 :end 2494 :value "docker push bonfacekilz/genenetwork2:latest" :post-blank 2 :post-affiliated 2447 :mode nil :granularity nil :parent #136)) (paragraph (:begin 2494 :end 2537 :contents-begin 2494 :contents-end 2536 :post-blank 1 :post-affiliated 2494 :mode nil :granularity nil :parent #136) #("Right now, we have 2 images on DockerHub:\n" 0 42 (:parent #142))) (plain-list (:type unordered :begin 2537 :end 2817 :contents-begin 2537 :contents-end 2817 :structure ((2537 0 "- " nil nil nil 2701) (2701 0 "- " nil nil nil 2817)) :post-blank 0 :post-affiliated 2537 :mode nil :granularity nil :parent #136) (item (:bullet "- " :begin 2537 :end 2701 :contents-begin 2539 :contents-end 2701 :checkbox nil :counter nil :structure ((2537 0 "- " nil nil nil 2701) (2701 0 "- " nil nil nil 2817)) :pre-blank 0 :post-blank 0 :post-affiliated 2537 :tag nil :mode item :granularity nil :parent #143) (paragraph (:begin 2539 :end 2701 :contents-begin 2539 :contents-end 2701 :post-blank 0 :post-affiliated 2539 :mode nil :granularity nil :parent #146) (link (:type "https" :path "//hub.docker.com/repository/docker/bonfacekilz/python2-genenetwork2" :format plain :raw-link "https://hub.docker.com/repository/docker/bonfacekilz/python2-genenetwork2" :application nil :search-option nil :begin 2539 :end 2612 :contents-begin nil :contents-end nil :post-blank 0 :parent #149)) #(":\n Contains the python2 version of gn2. Don't use this. Please use the\n python3 image!\n" 0 89 (:parent #149)))) (item (:bullet "- " :begin 2701 :end 2817 :contents-begin 2703 :contents-end 2817 :checkbox nil :counter nil :structure ((2537 0 "- " nil nil nil 2701) (2701 0 "- " nil nil nil 2817)) :pre-blank 0 :post-blank 0 :post-affiliated 2701 :tag nil :mode item :granularity nil :parent #143) (paragraph (:begin 2703 :end 2817 :contents-begin 2703 :contents-end 2817 :post-blank 0 :post-affiliated 2703 :mode nil :granularity nil :parent #147) (link (:type "https" :path "//hub.docker.com/repository/docker/bonfacekilz/python3-genenetwork2" :format plain :raw-link "https://hub.docker.com/repository/docker/bonfacekilz/python3-genenetwork2" :application nil :search-option nil :begin 2703 :end 2776 :contents-begin nil :contents-end nil :post-blank 0 :parent #150)) #(":\n Contains the python3 version of gn2.\n" 0 41 (:parent #150))))))))) #56)) #32)) #0 (item (:bullet "- " :begin 147 :end 209 :contents-begin 149 :contents-end 209 :checkbox nil :counter nil :structure ((113 0 "- " nil nil nil 147) (147 0 "- " nil nil nil 209) (209 0 "- " nil nil nil 259)) :pre-blank 0 :post-blank 0 :post-affiliated 147 :tag nil :mode item :granularity nil :parent #32) (paragraph (:begin 149 :end 209 :contents-begin 149 :contents-end 209 :post-blank 0 :post-affiliated 149 :mode nil :granularity nil :parent #36) (link (:type "custom-id" :path "creating-the-docker-images" :format bracket :raw-link "#creating-the-docker-images" :application nil :search-option nil :begin 149 :end 208 :contents-begin 180 :contents-end 206 :post-blank 0 :parent #39) #("Creating the Docker Images" 0 26 (:parent #42))) #("\n" 0 1 (:parent #39)))) (item (:bullet "- " :begin 209 :end 259 :contents-begin 211 :contents-end 259 :checkbox nil :counter nil :structure ((113 0 "- " nil nil nil 147) (147 0 "- " nil nil nil 209) (209 0 "- " nil nil nil 259)) :pre-blank 0 :post-blank 0 :post-affiliated 209 :tag nil :mode item :granularity nil :parent #32) (paragraph (:begin 211 :end 259 :contents-begin 211 :contents-end 259 :post-blank 0 :post-affiliated 211 :mode nil :granularity nil :parent #37) (link (:type "custom-id" :path "pushing-to-dockerhub" :format bracket :raw-link "#pushing-to-dockerhub" :application nil :search-option nil :begin 211 :end 258 :contents-begin 236 :contents-end 256 :post-blank 0 :parent #40) #("Pushing to DockerHub" 0 20 (:parent #43))) #("\n" 0 1 (:parent #40)))))) (paragraph (:begin 115 :end 147 :contents-begin 115 :contents-end 147 :post-blank 0 :post-affiliated 115 :mode nil :granularity nil :parent #0) (link (:type "custom-id" :path "introduction" :format bracket :raw-link "#introduction" :application nil :search-option nil :begin 115 :end 146 :contents-begin 132 :contents-end 144 :post-blank 0 :parent #3) #("Introduction" 0 12 (:parent #6))) #("\n" 0 1 (:parent #3))))) mapconcat(#f(compiled-function (element) #) ((item (:bullet "- " :begin 113 :end 147 :contents-begin 115 :contents-end 147 :checkbox nil :counter nil :structure ((113 0 "- " nil nil nil 147) (147 0 "- " nil nil nil 209) (209 0 "- " nil nil nil 259)) :pre-blank 0 :post-blank 0 :post-affiliated 113 :tag nil :mode item :granularity nil :parent (plain-list (:type unordered :begin 113 :end 259 :contents-begin 113 :contents-end 259 :structure ((113 0 "- " nil nil nil 147) (147 0 "- " nil nil nil 209) (209 0 "- " nil nil nil 259)) :post-blank 0 :post-affiliated 113 :mode planning :granularity nil :parent (section (:begin 113 :end 260 :contents-begin 113 :contents-end 259 :robust-begin 113 :robust-end 257 :post-blank 1 :post-affiliated 113 :mode section :granularity nil :parent (headline (:raw-value "Table of Contents" :begin 35 :end 260 :pre-blank 0 :contents-begin 113 :contents-end 259 :robust-begin 115 :robust-end 257 :level 1 :priority nil :tags ("TOC") :todo-keyword nil :todo-type nil :post-blank 1 :footnote-section-p nil :archivedp nil :commentedp nil :post-affiliated 35 :title (#("Table of Contents" 0 17 (:parent #81))) :mode nil :granularity nil :parent (org-data (:begin 1 :contents-begin 1 :contents-end 2817 :end 2817 :robust-begin 3 :robust-end 2815 :post-blank 0 :post-affiliated 1 :path nil :mode org-data :CATEGORY nil :granularity nil) (section (:begin 1 :end 35 :contents-begin 1 :contents-end 34 :robust-begin 1 :robust-end 32 :post-blank 1 :post-affiliated 1 :mode first-section :granularity nil :parent #127) (keyword (:key "TITLE" :value "Genenetwork2 Dockerized" :begin 1 :end 34 :post-blank 0 :post-affiliated 1 :mode top-comment :granularity nil :parent #130))) #81 (headline (:raw-value "Introduction" :begin 260 :end 926 :pre-blank 1 :contents-begin 276 :contents-end 925 :robust-begin 278 :robust-end 923 :level 1 :priority nil :tags nil :todo-keyword nil :todo-type nil :post-blank 1 :footnote-section-p nil :archivedp nil :commentedp nil :post-affiliated 260 :title (#("Introduction" 0 12 (:parent #132))) :mode nil :granularity nil :parent #127) (section (:begin 276 :end 926 :contents-begin 276 :contents-end 925 :robust-begin 276 :robust-end 923 :post-blank 1 :post-affiliated 276 :mode section :granularity nil :parent #132) (paragraph (:begin 276 :end 600 :contents-begin 276 :contents-end 599 :post-blank 1 :post-affiliated 276 :mode planning :granularity nil :parent #135) #("The CI(Continuous Integration) system for Genenetwork2 uses " 0 60 (:parent #138)) (link (:type "https" :path "//github.com/features/actions" :format bracket :raw-link "https://github.com/features/actions" :application nil :search-option nil :begin 336 :end 391 :contents-begin 375 :contents-end 389 :post-blank 0 :parent #138) #("Github\nActions" 0 14 (:parent #142))) #(". As such, it's important to have a way to run tests using\nfacilities provided by GUIX in a reproducible way. This project\nleverages GUIX to generate a docker container from which the unittests\nare ran from.\n" 0 208 (:parent #138))) (paragraph (:begin 600 :end 830 :contents-begin 600 :contents-end 829 :post-blank 1 :post-affiliated 600 :mode nil :granularity nil :parent #135) #("Find instructions on how to set docker up inside GUIX " 0 54 (:parent #139)) (link (:type "https" :path "//github.com/pjotrp/guix-notes/blob/master/CONTAINERS.org#run-docker" :format bracket :raw-link "https://github.com/pjotrp/guix-notes/blob/master/CONTAINERS.org#run-docker" :application nil :search-option nil :begin 654 :end 738 :contents-begin 732 :contents-end 736 :post-blank 0 :parent #139) #("here" 0 4 (:parent #143))) #(". This\ndocument will not get into that. It's assumed that you have a working\ndocker setup.\n" 0 91 (:parent #139))) (paragraph (:begin 830 :end 925 :contents-begin 830 :contents-end 925 :post-blank 0 :post-affiliated 830 :mode nil :granularity nil :parent #135) #("The rest of this document outlines how the docker container used in\nthe CI builds was created.\n" 0 95 (:parent #140))))) (headline (:raw-value "Creating the Docker Images" :begin 926 :end 2194 :pre-blank 1 :contents-begin 956 :contents-end 2193 :robust-begin 958 :robust-end 2191 :level 1 :priority nil :tags nil :todo-keyword nil :todo-type nil :post-blank 1 :footnote-section-p nil :archivedp nil :commentedp nil :post-affiliated 926 :title (#("Creating the Docker Images" 0 26 (:parent #133))) :mode nil :granularity nil :parent #127) (section (:begin 956 :end 2194 :contents-begin 956 :contents-end 2193 :robust-begin 956 :robust-end 2191 :post-blank 1 :post-affiliated 956 :mode section :granularity nil :parent #133) (paragraph (:begin 956 :end 1071 :contents-begin 956 :contents-end 1070 :post-blank 1 :post-affiliated 956 :mode planning :granularity nil :parent #136) #("The general idea is that GUIX is used to generate a set of binaries,\nwhich will be added to a base mariaDB image.\n" 0 114 (:parent #139))) (paragraph (:begin 1071 :end 1117 :contents-begin 1071 :contents-end 1116 :post-blank 1 :post-affiliated 1071 :mode nil :granularity nil :parent #136) #("First create the gn2 tar archive by running:\n" 0 45 (:parent #140))) (src-block (:language "sh" :switches nil :parameters nil :begin 1117 :end 1343 :number-lines nil :preserve-indent nil :retain-labels t :use-labels t :label-fmt nil :value "env GUIX_PACKAGE_PATH=\"/home/bonface/projects/guix-bioinformatics:/home/bonface/projects/guix-past/modules\" \\\n ./pre-inst-env guix pack --no-grafts\\\n -S /gn2-profile=/ \\\n screen genenetwork2\n" :post-blank 1 :post-affiliated 1117 :mode nil :granularity nil :parent #136)) (paragraph (:begin 1343 :end 1387 :contents-begin 1343 :contents-end 1386 :post-blank 1 :post-affiliated 1343 :mode nil :granularity nil :parent #136) #("The output will look something similar to:\n" 0 43 (:parent #142))) (fixed-width (:begin 1387 :end 1454 :value "/gnu/store/x3m77vwaqcwba24p5s4lrb7w2ii16lj9-tarball-pack.tar.gz" :post-blank 2 :post-affiliated 1387 :mode nil :granularity nil :parent #136)) (paragraph (:begin 1454 :end 1640 :contents-begin 1454 :contents-end 1639 :post-blank 1 :post-affiliated 1454 :mode nil :granularity nil :parent #136) #("Now create a folder from which will host the following dockerfile. You\ncan name this file Dockerfile. Note that mariadb is the base image\nsince it already has mariadb installed for us.\n" 0 185 (:parent #144))) (src-block (:language "conf" :switches nil :parameters nil :begin 1640 :end 1847 :number-lines nil :preserve-indent nil :retain-labels t :use-labels t :label-fmt nil :value "FROM mariadb:latest\n\nCOPY ./gn2.tar.gz /tmp/gn2.tar.gz\nRUN tar -xzf /tmp/gn2.tar.gz -C / && rm -f /tmp/gn2.tar.gz && \\\n mkdir -p /usr/local/mysql /genotype_files/genotype/json\n" :post-blank 1 :post-affiliated 1640 :mode nil :granularity nil :parent #136)) (paragraph (:begin 1847 :end 1895 :contents-begin 1847 :contents-end 1894 :post-blank 1 :post-affiliated 1847 :mode nil :granularity nil :parent #136) #("Build the image(Note the fullstop at the end):\n" 0 47 (:parent #146))) (fixed-width (:begin 1895 :end 1955 :value "sudo docker build -t genenetwork2:latest -f Dockerfile ." :post-blank 2 :post-affiliated 1895 :mode nil :granularity nil :parent #136)) (paragraph (:begin 1955 :end 2009 :contents-begin 1955 :contents-end 2008 :post-blank 1 :post-affiliated 1955 :mode nil :granularity nil :parent #136) #("To load the image interactively you've just created:\n" 0 53 (:parent #148))) (fixed-width (:begin 2009 :end 2054 :value "docker run -ti \"genenetwork2:latest\" bash" :post-blank 2 :post-affiliated 2009 :mode nil :granularity nil :parent #136)) (paragraph (:begin 2054 :end 2141 :contents-begin 2054 :contents-end 2140 :post-blank 1 :post-affiliated 2054 :mode nil :granularity nil :parent #136) #("Assuming you have a docker instance running, you could always run\ncommands in it e.g:\n" 0 86 (:parent #150))) (fixed-width (:begin 2141 :end 2193 :value "docker run \"genenetwork2:latest\" python --version" :post-blank 1 :post-affiliated 2141 :mode nil :granularity nil :parent #136)))) (headline (:raw-value "Pushing to DockerHub" :begin 2194 :end 2817 :pre-blank 1 :contents-begin 2218 :contents-end 2817 :robust-begin 2220 :robust-end 2815 :level 1 :priority nil :tags nil :todo-keyword nil :todo-type nil :post-blank 0 :footnote-section-p nil :archivedp nil :commentedp nil :post-affiliated 2194 :title (#("Pushing to DockerHub" 0 20 (:parent #134))) :mode nil :granularity nil :parent #127) (section (:begin 2218 :end 2817 :contents-begin 2218 :contents-end 2817 :robust-begin 2218 :robust-end 2815 :post-blank 0 :post-affiliated 2218 :mode section :granularity nil :parent #134) (paragraph (:begin 2218 :end 2325 :contents-begin 2218 :contents-end 2324 :post-blank 1 :post-affiliated 2218 :mode planning :granularity nil :parent #137) #("We use DockerHub to store the docker images from which we use on our\nCI environment using Github Actions.\n" 0 106 (:parent #140))) (paragraph (:begin 2325 :end 2447 :contents-begin 2325 :contents-end 2446 :post-blank 1 :post-affiliated 2325 :mode nil :granularity nil :parent #137) #("To push to dockerhub, first get the image name by running " 0 58 (:parent #141)) (verbatim (:begin 2383 :end 2398 :post-blank 0 :value "docker\nimages" :parent #141)) #(". Push to dockerhub using a command similar to:\n" 0 48 (:parent #141))) (fixed-width (:begin 2447 :end 2494 :value "docker push bonfacekilz/genenetwork2:latest" :post-blank 2 :post-affiliated 2447 :mode nil :granularity nil :parent #137)) (paragraph (:begin 2494 :end 2537 :contents-begin 2494 :contents-end 2536 :post-blank 1 :post-affiliated 2494 :mode nil :granularity nil :parent #137) #("Right now, we have 2 images on DockerHub:\n" 0 42 (:parent #143))) (plain-list (:type unordered :begin 2537 :end 2817 :contents-begin 2537 :contents-end 2817 :structure ((2537 0 "- " nil nil nil 2701) (2701 0 "- " nil nil nil 2817)) :post-blank 0 :post-affiliated 2537 :mode nil :granularity nil :parent #137) (item (:bullet "- " :begin 2537 :end 2701 :contents-begin 2539 :contents-end 2701 :checkbox nil :counter nil :structure ((2537 0 "- " nil nil nil 2701) (2701 0 "- " nil nil nil 2817)) :pre-blank 0 :post-blank 0 :post-affiliated 2537 :tag nil :mode item :granularity nil :parent #144) (paragraph (:begin 2539 :end 2701 :contents-begin 2539 :contents-end 2701 :post-blank 0 :post-affiliated 2539 :mode nil :granularity nil :parent #147) (link (:type "https" :path "//hub.docker.com/repository/docker/bonfacekilz/python2-genenetwork2" :format plain :raw-link "https://hub.docker.com/repository/docker/bonfacekilz/python2-genenetwork2" :application nil :search-option nil :begin 2539 :end 2612 :contents-begin nil :contents-end nil :post-blank 0 :parent #150)) #(":\n Contains the python2 version of gn2. Don't use this. Please use the\n python3 image!\n" 0 89 (:parent #150)))) (item (:bullet "- " :begin 2701 :end 2817 :contents-begin 2703 :contents-end 2817 :checkbox nil :counter nil :structure ((2537 0 "- " nil nil nil 2701) (2701 0 "- " nil nil nil 2817)) :pre-blank 0 :post-blank 0 :post-affiliated 2701 :tag nil :mode item :granularity nil :parent #144) (paragraph (:begin 2703 :end 2817 :contents-begin 2703 :contents-end 2817 :post-blank 0 :post-affiliated 2703 :mode nil :granularity nil :parent #148) (link (:type "https" :path "//hub.docker.com/repository/docker/bonfacekilz/python3-genenetwork2" :format plain :raw-link "https://hub.docker.com/repository/docker/bonfacekilz/python3-genenetwork2" :application nil :search-option nil :begin 2703 :end 2776 :contents-begin nil :contents-end nil :post-blank 0 :parent #151)) #(":\n Contains the python3 version of gn2.\n" 0 41 (:parent #151))))))))) #57)) #33)) . #0)) (paragraph (:begin 115 :end 147 :contents-begin 115 :contents-end 147 :post-blank 0 :post-affiliated 115 :mode nil :granularity nil :parent #1) (link (:type "custom-id" :path "introduction" :format bracket :raw-link "#introduction" :application nil :search-option nil :begin 115 :end 146 :contents-begin 132 :contents-end 144 :post-blank 0 :parent #4) #("Introduction" 0 12 (:parent #7))) #("\n" 0 1 (:parent #4)))) (item (:bullet "- " :begin 147 :end 209 :contents-begin 149 :contents-end 209 :checkbox nil :counter nil :structure ((113 0 "- " nil nil nil 147) (147 0 "- " nil nil nil 209) (209 0 "- " nil nil nil 259)) :pre-blank 0 :post-blank 0 :post-affiliated 147 :tag nil :mode item :granularity nil :parent (plain-list (:type unordered :begin 113 :end 259 :contents-begin 113 :contents-end 259 :structure ((113 0 "- " nil nil nil 147) (147 0 "- " nil nil nil 209) (209 0 "- " nil nil nil 259)) :post-blank 0 :post-affiliated 113 :mode planning :granularity nil :parent (section (:begin 113 :end 260 :contents-begin 113 :contents-end 259 :robust-begin 113 :robust-end 257 :post-blank 1 :post-affiliated 113 :mode section :granularity nil :parent (headline (:raw-value "Table of Contents" :begin 35 :end 260 :pre-blank 0 :contents-begin 113 :contents-end 259 :robust-begin 115 :robust-end 257 :level 1 :priority nil :tags ("TOC") :todo-keyword nil :todo-type nil :post-blank 1 :footnote-section-p nil :archivedp nil :commentedp nil :post-affiliated 35 :title (#("Table of Contents" 0 17 (:parent #82))) :mode nil :granularity nil :parent (org-data (:begin 1 :contents-begin 1 :contents-end 2817 :end 2817 :robust-begin 3 :robust-end 2815 :post-blank 0 :post-affiliated 1 :path nil :mode org-data :CATEGORY nil :granularity nil) (section (:begin 1 :end 35 :contents-begin 1 :contents-end 34 :robust-begin 1 :robust-end 32 :post-blank 1 :post-affiliated 1 :mode first-section :granularity nil :parent #128) (keyword (:key "TITLE" :value "Genenetwork2 Dockerized" :begin 1 :end 34 :post-blank 0 :post-affiliated 1 :mode top-comment :granularity nil :parent #131))) #82 (headline (:raw-value "Introduction" :begin 260 :end 926 :pre-blank 1 :contents-begin 276 :contents-end 925 :robust-begin 278 :robust-end 923 :level 1 :priority nil :tags nil :todo-keyword nil :todo-type nil :post-blank 1 :footnote-section-p nil :archivedp nil :commentedp nil :post-affiliated 260 :title (#("Introduction" 0 12 (:parent #133))) :mode nil :granularity nil :parent #128) (section (:begin 276 :end 926 :contents-begin 276 :contents-end 925 :robust-begin 276 :robust-end 923 :post-blank 1 :post-affiliated 276 :mode section :granularity nil :parent #133) (paragraph (:begin 276 :end 600 :contents-begin 276 :contents-end 599 :post-blank 1 :post-affiliated 276 :mode planning :granularity nil :parent #136) #("The CI(Continuous Integration) system for Genenetwork2 uses " 0 60 (:parent #139)) (link (:type "https" :path "//github.com/features/actions" :format bracket :raw-link "https://github.com/features/actions" :application nil :search-option nil :begin 336 :end 391 :contents-begin 375 :contents-end 389 :post-blank 0 :parent #139) #("Github\nActions" 0 14 (:parent #143))) #(". As such, it's important to have a way to run tests using\nfacilities provided by GUIX in a reproducible way. This project\nleverages GUIX to generate a docker container from which the unittests\nare ran from.\n" 0 208 (:parent #139))) (paragraph (:begin 600 :end 830 :contents-begin 600 :contents-end 829 :post-blank 1 :post-affiliated 600 :mode nil :granularity nil :parent #136) #("Find instructions on how to set docker up inside GUIX " 0 54 (:parent #140)) (link (:type "https" :path "//github.com/pjotrp/guix-notes/blob/master/CONTAINERS.org#run-docker" :format bracket :raw-link "https://github.com/pjotrp/guix-notes/blob/master/CONTAINERS.org#run-docker" :application nil :search-option nil :begin 654 :end 738 :contents-begin 732 :contents-end 736 :post-blank 0 :parent #140) #("here" 0 4 (:parent #144))) #(". This\ndocument will not get into that. It's assumed that you have a working\ndocker setup.\n" 0 91 (:parent #140))) (paragraph (:begin 830 :end 925 :contents-begin 830 :contents-end 925 :post-blank 0 :post-affiliated 830 :mode nil :granularity nil :parent #136) #("The rest of this document outlines how the docker container used in\nthe CI builds was created.\n" 0 95 (:parent #141))))) (headline (:raw-value "Creating the Docker Images" :begin 926 :end 2194 :pre-blank 1 :contents-begin 956 :contents-end 2193 :robust-begin 958 :robust-end 2191 :level 1 :priority nil :tags nil :todo-keyword nil :todo-type nil :post-blank 1 :footnote-section-p nil :archivedp nil :commentedp nil :post-affiliated 926 :title (#("Creating the Docker Images" 0 26 (:parent #134))) :mode nil :granularity nil :parent #128) (section (:begin 956 :end 2194 :contents-begin 956 :contents-end 2193 :robust-begin 956 :robust-end 2191 :post-blank 1 :post-affiliated 956 :mode section :granularity nil :parent #134) (paragraph (:begin 956 :end 1071 :contents-begin 956 :contents-end 1070 :post-blank 1 :post-affiliated 956 :mode planning :granularity nil :parent #137) #("The general idea is that GUIX is used to generate a set of binaries,\nwhich will be added to a base mariaDB image.\n" 0 114 (:parent #140))) (paragraph (:begin 1071 :end 1117 :contents-begin 1071 :contents-end 1116 :post-blank 1 :post-affiliated 1071 :mode nil :granularity nil :parent #137) #("First create the gn2 tar archive by running:\n" 0 45 (:parent #141))) (src-block (:language "sh" :switches nil :parameters nil :begin 1117 :end 1343 :number-lines nil :preserve-indent nil :retain-labels t :use-labels t :label-fmt nil :value "env GUIX_PACKAGE_PATH=\"/home/bonface/projects/guix-bioinformatics:/home/bonface/projects/guix-past/modules\" \\\n ./pre-inst-env guix pack --no-grafts\\\n -S /gn2-profile=/ \\\n screen genenetwork2\n" :post-blank 1 :post-affiliated 1117 :mode nil :granularity nil :parent #137)) (paragraph (:begin 1343 :end 1387 :contents-begin 1343 :contents-end 1386 :post-blank 1 :post-affiliated 1343 :mode nil :granularity nil :parent #137) #("The output will look something similar to:\n" 0 43 (:parent #143))) (fixed-width (:begin 1387 :end 1454 :value "/gnu/store/x3m77vwaqcwba24p5s4lrb7w2ii16lj9-tarball-pack.tar.gz" :post-blank 2 :post-affiliated 1387 :mode nil :granularity nil :parent #137)) (paragraph (:begin 1454 :end 1640 :contents-begin 1454 :contents-end 1639 :post-blank 1 :post-affiliated 1454 :mode nil :granularity nil :parent #137) #("Now create a folder from which will host the following dockerfile. You\ncan name this file Dockerfile. Note that mariadb is the base image\nsince it already has mariadb installed for us.\n" 0 185 (:parent #145))) (src-block (:language "conf" :switches nil :parameters nil :begin 1640 :end 1847 :number-lines nil :preserve-indent nil :retain-labels t :use-labels t :label-fmt nil :value "FROM mariadb:latest\n\nCOPY ./gn2.tar.gz /tmp/gn2.tar.gz\nRUN tar -xzf /tmp/gn2.tar.gz -C / && rm -f /tmp/gn2.tar.gz && \\\n mkdir -p /usr/local/mysql /genotype_files/genotype/json\n" :post-blank 1 :post-affiliated 1640 :mode nil :granularity nil :parent #137)) (paragraph (:begin 1847 :end 1895 :contents-begin 1847 :contents-end 1894 :post-blank 1 :post-affiliated 1847 :mode nil :granularity nil :parent #137) #("Build the image(Note the fullstop at the end):\n" 0 47 (:parent #147))) (fixed-width (:begin 1895 :end 1955 :value "sudo docker build -t genenetwork2:latest -f Dockerfile ." :post-blank 2 :post-affiliated 1895 :mode nil :granularity nil :parent #137)) (paragraph (:begin 1955 :end 2009 :contents-begin 1955 :contents-end 2008 :post-blank 1 :post-affiliated 1955 :mode nil :granularity nil :parent #137) #("To load the image interactively you've just created:\n" 0 53 (:parent #149))) (fixed-width (:begin 2009 :end 2054 :value "docker run -ti \"genenetwork2:latest\" bash" :post-blank 2 :post-affiliated 2009 :mode nil :granularity nil :parent #137)) (paragraph (:begin 2054 :end 2141 :contents-begin 2054 :contents-end 2140 :post-blank 1 :post-affiliated 2054 :mode nil :granularity nil :parent #137) #("Assuming you have a docker instance running, you could always run\ncommands in it e.g:\n" 0 86 (:parent #151))) (fixed-width (:begin 2141 :end 2193 :value "docker run \"genenetwork2:latest\" python --version" :post-blank 1 :post-affiliated 2141 :mode nil :granularity nil :parent #137)))) (headline (:raw-value "Pushing to DockerHub" :begin 2194 :end 2817 :pre-blank 1 :contents-begin 2218 :contents-end 2817 :robust-begin 2220 :robust-end 2815 :level 1 :priority nil :tags nil :todo-keyword nil :todo-type nil :post-blank 0 :footnote-section-p nil :archivedp nil :commentedp nil :post-affiliated 2194 :title (#("Pushing to DockerHub" 0 20 (:parent #135))) :mode nil :granularity nil :parent #128) (section (:begin 2218 :end 2817 :contents-begin 2218 :contents-end 2817 :robust-begin 2218 :robust-end 2815 :post-blank 0 :post-affiliated 2218 :mode section :granularity nil :parent #135) (paragraph (:begin 2218 :end 2325 :contents-begin 2218 :contents-end 2324 :post-blank 1 :post-affiliated 2218 :mode planning :granularity nil :parent #138) #("We use DockerHub to store the docker images from which we use on our\nCI environment using Github Actions.\n" 0 106 (:parent #141))) (paragraph (:begin 2325 :end 2447 :contents-begin 2325 :contents-end 2446 :post-blank 1 :post-affiliated 2325 :mode nil :granularity nil :parent #138) #("To push to dockerhub, first get the image name by running " 0 58 (:parent #142)) (verbatim (:begin 2383 :end 2398 :post-blank 0 :value "docker\nimages" :parent #142)) #(". Push to dockerhub using a command similar to:\n" 0 48 (:parent #142))) (fixed-width (:begin 2447 :end 2494 :value "docker push bonfacekilz/genenetwork2:latest" :post-blank 2 :post-affiliated 2447 :mode nil :granularity nil :parent #138)) (paragraph (:begin 2494 :end 2537 :contents-begin 2494 :contents-end 2536 :post-blank 1 :post-affiliated 2494 :mode nil :granularity nil :parent #138) #("Right now, we have 2 images on DockerHub:\n" 0 42 (:parent #144))) (plain-list (:type unordered :begin 2537 :end 2817 :contents-begin 2537 :contents-end 2817 :structure ((2537 0 "- " nil nil nil 2701) (2701 0 "- " nil nil nil 2817)) :post-blank 0 :post-affiliated 2537 :mode nil :granularity nil :parent #138) (item (:bullet "- " :begin 2537 :end 2701 :contents-begin 2539 :contents-end 2701 :checkbox nil :counter nil :structure ((2537 0 "- " nil nil nil 2701) (2701 0 "- " nil nil nil 2817)) :pre-blank 0 :post-blank 0 :post-affiliated 2537 :tag nil :mode item :granularity nil :parent #145) (paragraph (:begin 2539 :end 2701 :contents-begin 2539 :contents-end 2701 :post-blank 0 :post-affiliated 2539 :mode nil :granularity nil :parent #148) (link (:type "https" :path "//hub.docker.com/repository/docker/bonfacekilz/python2-genenetwork2" :format plain :raw-link "https://hub.docker.com/repository/docker/bonfacekilz/python2-genenetwork2" :application nil :search-option nil :begin 2539 :end 2612 :contents-begin nil :contents-end nil :post-blank 0 :parent #151)) #(":\n Contains the python2 version of gn2. Don't use this. Please use the\n python3 image!\n" 0 89 (:parent #151)))) (item (:bullet "- " :begin 2701 :end 2817 :contents-begin 2703 :contents-end 2817 :checkbox nil :counter nil :structure ((2537 0 "- " nil nil nil 2701) (2701 0 "- " nil nil nil 2817)) :pre-blank 0 :post-blank 0 :post-affiliated 2701 :tag nil :mode item :granularity nil :parent #145) (paragraph (:begin 2703 :end 2817 :contents-begin 2703 :contents-end 2817 :post-blank 0 :post-affiliated 2703 :mode nil :granularity nil :parent #149) (link (:type "https" :path "//hub.docker.com/repository/docker/bonfacekilz/python3-genenetwork2" :format plain :raw-link "https://hub.docker.com/repository/docker/bonfacekilz/python3-genenetwork2" :application nil :search-option nil :begin 2703 :end 2776 :contents-begin nil :contents-end nil :post-blank 0 :parent #152)) #(":\n Contains the python3 version of gn2.\n" 0 41 (:parent #152))))))))) #58)) #34)) . #0)) (paragraph (:begin 149 :end 209 :contents-begin 149 :contents-end 209 :post-blank 0 :post-affiliated 149 :mode nil :granularity nil :parent #2) (link (:type "custom-id" :path "creating-the-docker-images" :format bracket :raw-link "#creating-the-docker-images" :application nil :search-option nil :begin 149 :end 208 :contents-begin 180 :contents-end 206 :post-blank 0 :parent #5) #("Creating the Docker Images" 0 26 (:parent #8))) #("\n" 0 1 (:parent #5)))) (item (:bullet "- " :begin 209 :end 259 :contents-begin 211 :contents-end 259 :checkbox nil :counter nil :structure ((113 0 "- " nil nil nil 147) (147 0 "- " nil nil nil 209) (209 0 "- " nil nil nil 259)) :pre-blank 0 :post-blank 0 :post-affiliated 209 :tag nil :mode item :granularity nil :parent (plain-list (:type unordered :begin 113 :end 259 :contents-begin 113 :contents-end 259 :structure ((113 0 "- " nil nil nil 147) (147 0 "- " nil nil nil 209) (209 0 "- " nil nil nil 259)) :post-blank 0 :post-affiliated 113 :mode planning :granularity nil :parent (section (:begin 113 :end 260 :contents-begin 113 :contents-end 259 :robust-begin 113 :robust-end 257 :post-blank 1 :post-affiliated 113 :mode section :granularity nil :parent (headline (:raw-value "Table of Contents" :begin 35 :end 260 :pre-blank 0 :contents-begin 113 :contents-end 259 :robust-begin 115 :robust-end 257 :level 1 :priority nil :tags ("TOC") :todo-keyword nil :todo-type nil :post-blank 1 :footnote-section-p nil :archivedp nil :commentedp nil :post-affiliated 35 :title (#("Table of Contents" 0 17 (:parent #83))) :mode nil :granularity nil :parent (org-data (:begin 1 :contents-begin 1 :contents-end 2817 :end 2817 :robust-begin 3 :robust-end 2815 :post-blank 0 :post-affiliated 1 :path nil :mode org-data :CATEGORY nil :granularity nil) (section (:begin 1 :end 35 :contents-begin 1 :contents-end 34 :robust-begin 1 :robust-end 32 :post-blank 1 :post-affiliated 1 :mode first-section :granularity nil :parent #129) (keyword (:key "TITLE" :value "Genenetwork2 Dockerized" :begin 1 :end 34 :post-blank 0 :post-affiliated 1 :mode top-comment :granularity nil :parent #132))) #83 (headline (:raw-value "Introduction" :begin 260 :end 926 :pre-blank 1 :contents-begin 276 :contents-end 925 :robust-begin 278 :robust-end 923 :level 1 :priority nil :tags nil :todo-keyword nil :todo-type nil :post-blank 1 :footnote-section-p nil :archivedp nil :commentedp nil :post-affiliated 260 :title (#("Introduction" 0 12 (:parent #134))) :mode nil :granularity nil :parent #129) (section (:begin 276 :end 926 :contents-begin 276 :contents-end 925 :robust-begin 276 :robust-end 923 :post-blank 1 :post-affiliated 276 :mode section :granularity nil :parent #134) (paragraph (:begin 276 :end 600 :contents-begin 276 :contents-end 599 :post-blank 1 :post-affiliated 276 :mode planning :granularity nil :parent #137) #("The CI(Continuous Integration) system for Genenetwork2 uses " 0 60 (:parent #140)) (link (:type "https" :path "//github.com/features/actions" :format bracket :raw-link "https://github.com/features/actions" :application nil :search-option nil :begin 336 :end 391 :contents-begin 375 :contents-end 389 :post-blank 0 :parent #140) #("Github\nActions" 0 14 (:parent #144))) #(". As such, it's important to have a way to run tests using\nfacilities provided by GUIX in a reproducible way. This project\nleverages GUIX to generate a docker container from which the unittests\nare ran from.\n" 0 208 (:parent #140))) (paragraph (:begin 600 :end 830 :contents-begin 600 :contents-end 829 :post-blank 1 :post-affiliated 600 :mode nil :granularity nil :parent #137) #("Find instructions on how to set docker up inside GUIX " 0 54 (:parent #141)) (link (:type "https" :path "//github.com/pjotrp/guix-notes/blob/master/CONTAINERS.org#run-docker" :format bracket :raw-link "https://github.com/pjotrp/guix-notes/blob/master/CONTAINERS.org#run-docker" :application nil :search-option nil :begin 654 :end 738 :contents-begin 732 :contents-end 736 :post-blank 0 :parent #141) #("here" 0 4 (:parent #145))) #(". This\ndocument will not get into that. It's assumed that you have a working\ndocker setup.\n" 0 91 (:parent #141))) (paragraph (:begin 830 :end 925 :contents-begin 830 :contents-end 925 :post-blank 0 :post-affiliated 830 :mode nil :granularity nil :parent #137) #("The rest of this document outlines how the docker container used in\nthe CI builds was created.\n" 0 95 (:parent #142))))) (headline (:raw-value "Creating the Docker Images" :begin 926 :end 2194 :pre-blank 1 :contents-begin 956 :contents-end 2193 :robust-begin 958 :robust-end 2191 :level 1 :priority nil :tags nil :todo-keyword nil :todo-type nil :post-blank 1 :footnote-section-p nil :archivedp nil :commentedp nil :post-affiliated 926 :title (#("Creating the Docker Images" 0 26 (:parent #135))) :mode nil :granularity nil :parent #129) (section (:begin 956 :end 2194 :contents-begin 956 :contents-end 2193 :robust-begin 956 :robust-end 2191 :post-blank 1 :post-affiliated 956 :mode section :granularity nil :parent #135) (paragraph (:begin 956 :end 1071 :contents-begin 956 :contents-end 1070 :post-blank 1 :post-affiliated 956 :mode planning :granularity nil :parent #138) #("The general idea is that GUIX is used to generate a set of binaries,\nwhich will be added to a base mariaDB image.\n" 0 114 (:parent #141))) (paragraph (:begin 1071 :end 1117 :contents-begin 1071 :contents-end 1116 :post-blank 1 :post-affiliated 1071 :mode nil :granularity nil :parent #138) #("First create the gn2 tar archive by running:\n" 0 45 (:parent #142))) (src-block (:language "sh" :switches nil :parameters nil :begin 1117 :end 1343 :number-lines nil :preserve-indent nil :retain-labels t :use-labels t :label-fmt nil :value "env GUIX_PACKAGE_PATH=\"/home/bonface/projects/guix-bioinformatics:/home/bonface/projects/guix-past/modules\" \\\n ./pre-inst-env guix pack --no-grafts\\\n -S /gn2-profile=/ \\\n screen genenetwork2\n" :post-blank 1 :post-affiliated 1117 :mode nil :granularity nil :parent #138)) (paragraph (:begin 1343 :end 1387 :contents-begin 1343 :contents-end 1386 :post-blank 1 :post-affiliated 1343 :mode nil :granularity nil :parent #138) #("The output will look something similar to:\n" 0 43 (:parent #144))) (fixed-width (:begin 1387 :end 1454 :value "/gnu/store/x3m77vwaqcwba24p5s4lrb7w2ii16lj9-tarball-pack.tar.gz" :post-blank 2 :post-affiliated 1387 :mode nil :granularity nil :parent #138)) (paragraph (:begin 1454 :end 1640 :contents-begin 1454 :contents-end 1639 :post-blank 1 :post-affiliated 1454 :mode nil :granularity nil :parent #138) #("Now create a folder from which will host the following dockerfile. You\ncan name this file Dockerfile. Note that mariadb is the base image\nsince it already has mariadb installed for us.\n" 0 185 (:parent #146))) (src-block (:language "conf" :switches nil :parameters nil :begin 1640 :end 1847 :number-lines nil :preserve-indent nil :retain-labels t :use-labels t :label-fmt nil :value "FROM mariadb:latest\n\nCOPY ./gn2.tar.gz /tmp/gn2.tar.gz\nRUN tar -xzf /tmp/gn2.tar.gz -C / && rm -f /tmp/gn2.tar.gz && \\\n mkdir -p /usr/local/mysql /genotype_files/genotype/json\n" :post-blank 1 :post-affiliated 1640 :mode nil :granularity nil :parent #138)) (paragraph (:begin 1847 :end 1895 :contents-begin 1847 :contents-end 1894 :post-blank 1 :post-affiliated 1847 :mode nil :granularity nil :parent #138) #("Build the image(Note the fullstop at the end):\n" 0 47 (:parent #148))) (fixed-width (:begin 1895 :end 1955 :value "sudo docker build -t genenetwork2:latest -f Dockerfile ." :post-blank 2 :post-affiliated 1895 :mode nil :granularity nil :parent #138)) (paragraph (:begin 1955 :end 2009 :contents-begin 1955 :contents-end 2008 :post-blank 1 :post-affiliated 1955 :mode nil :granularity nil :parent #138) #("To load the image interactively you've just created:\n" 0 53 (:parent #150))) (fixed-width (:begin 2009 :end 2054 :value "docker run -ti \"genenetwork2:latest\" bash" :post-blank 2 :post-affiliated 2009 :mode nil :granularity nil :parent #138)) (paragraph (:begin 2054 :end 2141 :contents-begin 2054 :contents-end 2140 :post-blank 1 :post-affiliated 2054 :mode nil :granularity nil :parent #138) #("Assuming you have a docker instance running, you could always run\ncommands in it e.g:\n" 0 86 (:parent #152))) (fixed-width (:begin 2141 :end 2193 :value "docker run \"genenetwork2:latest\" python --version" :post-blank 1 :post-affiliated 2141 :mode nil :granularity nil :parent #138)))) (headline (:raw-value "Pushing to DockerHub" :begin 2194 :end 2817 :pre-blank 1 :contents-begin 2218 :contents-end 2817 :robust-begin 2220 :robust-end 2815 :level 1 :priority nil :tags nil :todo-keyword nil :todo-type nil :post-blank 0 :footnote-section-p nil :archivedp nil :commentedp nil :post-affiliated 2194 :title (#("Pushing to DockerHub" 0 20 (:parent #136))) :mode nil :granularity nil :parent #129) (section (:begin 2218 :end 2817 :contents-begin 2218 :contents-end 2817 :robust-begin 2218 :robust-end 2815 :post-blank 0 :post-affiliated 2218 :mode section :granularity nil :parent #136) (paragraph (:begin 2218 :end 2325 :contents-begin 2218 :contents-end 2324 :post-blank 1 :post-affiliated 2218 :mode planning :granularity nil :parent #139) #("We use DockerHub to store the docker images from which we use on our\nCI environment using Github Actions.\n" 0 106 (:parent #142))) (paragraph (:begin 2325 :end 2447 :contents-begin 2325 :contents-end 2446 :post-blank 1 :post-affiliated 2325 :mode nil :granularity nil :parent #139) #("To push to dockerhub, first get the image name by running " 0 58 (:parent #143)) (verbatim (:begin 2383 :end 2398 :post-blank 0 :value "docker\nimages" :parent #143)) #(". Push to dockerhub using a command similar to:\n" 0 48 (:parent #143))) (fixed-width (:begin 2447 :end 2494 :value "docker push bonfacekilz/genenetwork2:latest" :post-blank 2 :post-affiliated 2447 :mode nil :granularity nil :parent #139)) (paragraph (:begin 2494 :end 2537 :contents-begin 2494 :contents-end 2536 :post-blank 1 :post-affiliated 2494 :mode nil :granularity nil :parent #139) #("Right now, we have 2 images on DockerHub:\n" 0 42 (:parent #145))) (plain-list (:type unordered :begin 2537 :end 2817 :contents-begin 2537 :contents-end 2817 :structure ((2537 0 "- " nil nil nil 2701) (2701 0 "- " nil nil nil 2817)) :post-blank 0 :post-affiliated 2537 :mode nil :granularity nil :parent #139) (item (:bullet "- " :begin 2537 :end 2701 :contents-begin 2539 :contents-end 2701 :checkbox nil :counter nil :structure ((2537 0 "- " nil nil nil 2701) (2701 0 "- " nil nil nil 2817)) :pre-blank 0 :post-blank 0 :post-affiliated 2537 :tag nil :mode item :granularity nil :parent #146) (paragraph (:begin 2539 :end 2701 :contents-begin 2539 :contents-end 2701 :post-blank 0 :post-affiliated 2539 :mode nil :granularity nil :parent #149) (link (:type "https" :path "//hub.docker.com/repository/docker/bonfacekilz/python2-genenetwork2" :format plain :raw-link "https://hub.docker.com/repository/docker/bonfacekilz/python2-genenetwork2" :application nil :search-option nil :begin 2539 :end 2612 :contents-begin nil :contents-end nil :post-blank 0 :parent #152)) #(":\n Contains the python2 version of gn2. Don't use this. Please use the\n python3 image!\n" 0 89 (:parent #152)))) (item (:bullet "- " :begin 2701 :end 2817 :contents-begin 2703 :contents-end 2817 :checkbox nil :counter nil :structure ((2537 0 "- " nil nil nil 2701) (2701 0 "- " nil nil nil 2817)) :pre-blank 0 :post-blank 0 :post-affiliated 2701 :tag nil :mode item :granularity nil :parent #146) (paragraph (:begin 2703 :end 2817 :contents-begin 2703 :contents-end 2817 :post-blank 0 :post-affiliated 2703 :mode nil :granularity nil :parent #150) (link (:type "https" :path "//hub.docker.com/repository/docker/bonfacekilz/python3-genenetwork2" :format plain :raw-link "https://hub.docker.com/repository/docker/bonfacekilz/python3-genenetwork2" :application nil :search-option nil :begin 2703 :end 2776 :contents-begin nil :contents-end nil :post-blank 0 :parent #153)) #(":\n Contains the python3 version of gn2.\n" 0 41 (:parent #153))))))))) #59)) #35)) . #0)) (paragraph (:begin 211 :end 259 :contents-begin 211 :contents-end 259 :post-blank 0 :post-affiliated 211 :mode nil :granularity nil :parent #3) (link (:type "custom-id" :path "pushing-to-dockerhub" :format bracket :raw-link "#pushing-to-dockerhub" :application nil :search-option nil :begin 211 :end 258 :contents-begin 236 :contents-end 256 :post-blank 0 :parent #6) #("Pushing to DockerHub" 0 20 (:parent #9))) #("\n" 0 1 (:parent #6))))) "") org-export-data((plain-list (:type unordered :begin 113 :end 259 :contents-begin 113 :contents-end 259 :structure ((113 0 "- " nil nil nil 147) (147 0 "- " nil nil nil 209) (209 0 "- " nil nil nil 259)) :post-blank 0 :post-affiliated 113 :mode planning :granularity nil :parent (section (:begin 113 :end 260 :contents-begin 113 :contents-end 259 :robust-begin 113 :robust-end 257 :post-blank 1 :post-affiliated 113 :mode section :granularity nil :parent (headline (:raw-value "Table of Contents" :begin 35 :end 260 :pre-blank 0 :contents-begin 113 :contents-end 259 :robust-begin 115 :robust-end 257 :level 1 :priority nil :tags ("TOC") :todo-keyword nil :todo-type nil :post-blank 1 :footnote-section-p nil :archivedp nil :commentedp nil :post-affiliated 35 :title (#("Table of Contents" 0 17 (:parent #48))) :mode nil :granularity nil :parent (org-data (:begin 1 :contents-begin 1 :contents-end 2817 :end 2817 :robust-begin 3 :robust-end 2815 :post-blank 0 :post-affiliated 1 :path nil :mode org-data :CATEGORY nil :granularity nil) (section (:begin 1 :end 35 :contents-begin 1 :contents-end 34 :robust-begin 1 :robust-end 32 :post-blank 1 :post-affiliated 1 :mode first-section :granularity nil :parent #94) (keyword (:key "TITLE" :value "Genenetwork2 Dockerized" :begin 1 :end 34 :post-blank 0 :post-affiliated 1 :mode top-comment :granularity nil :parent #97))) #48 (headline (:raw-value "Introduction" :begin 260 :end 926 :pre-blank 1 :contents-begin 276 :contents-end 925 :robust-begin 278 :robust-end 923 :level 1 :priority nil :tags nil :todo-keyword nil :todo-type nil :post-blank 1 :footnote-section-p nil :archivedp nil :commentedp nil :post-affiliated 260 :title (#("Introduction" 0 12 (:parent #99))) :mode nil :granularity nil :parent #94) (section (:begin 276 :end 926 :contents-begin 276 :contents-end 925 :robust-begin 276 :robust-end 923 :post-blank 1 :post-affiliated 276 :mode section :granularity nil :parent #99) (paragraph (:begin 276 :end 600 :contents-begin 276 :contents-end 599 :post-blank 1 :post-affiliated 276 :mode planning :granularity nil :parent #102) #("The CI(Continuous Integration) system for Genenetwork2 uses " 0 60 (:parent #105)) (link (:type "https" :path "//github.com/features/actions" :format bracket :raw-link "https://github.com/features/actions" :application nil :search-option nil :begin 336 :end 391 :contents-begin 375 :contents-end 389 :post-blank 0 :parent #105) #("Github\nActions" 0 14 (:parent #109))) #(". As such, it's important to have a way to run tests using\nfacilities provided by GUIX in a reproducible way. This project\nleverages GUIX to generate a docker container from which the unittests\nare ran from.\n" 0 208 (:parent #105))) (paragraph (:begin 600 :end 830 :contents-begin 600 :contents-end 829 :post-blank 1 :post-affiliated 600 :mode nil :granularity nil :parent #102) #("Find instructions on how to set docker up inside GUIX " 0 54 (:parent #106)) (link (:type "https" :path "//github.com/pjotrp/guix-notes/blob/master/CONTAINERS.org#run-docker" :format bracket :raw-link "https://github.com/pjotrp/guix-notes/blob/master/CONTAINERS.org#run-docker" :application nil :search-option nil :begin 654 :end 738 :contents-begin 732 :contents-end 736 :post-blank 0 :parent #106) #("here" 0 4 (:parent #110))) #(". This\ndocument will not get into that. It's assumed that you have a working\ndocker setup.\n" 0 91 (:parent #106))) (paragraph (:begin 830 :end 925 :contents-begin 830 :contents-end 925 :post-blank 0 :post-affiliated 830 :mode nil :granularity nil :parent #102) #("The rest of this document outlines how the docker container used in\nthe CI builds was created.\n" 0 95 (:parent #107))))) (headline (:raw-value "Creating the Docker Images" :begin 926 :end 2194 :pre-blank 1 :contents-begin 956 :contents-end 2193 :robust-begin 958 :robust-end 2191 :level 1 :priority nil :tags nil :todo-keyword nil :todo-type nil :post-blank 1 :footnote-section-p nil :archivedp nil :commentedp nil :post-affiliated 926 :title (#("Creating the Docker Images" 0 26 (:parent #100))) :mode nil :granularity nil :parent #94) (section (:begin 956 :end 2194 :contents-begin 956 :contents-end 2193 :robust-begin 956 :robust-end 2191 :post-blank 1 :post-affiliated 956 :mode section :granularity nil :parent #100) (paragraph (:begin 956 :end 1071 :contents-begin 956 :contents-end 1070 :post-blank 1 :post-affiliated 956 :mode planning :granularity nil :parent #103) #("The general idea is that GUIX is used to generate a set of binaries,\nwhich will be added to a base mariaDB image.\n" 0 114 (:parent #106))) (paragraph (:begin 1071 :end 1117 :contents-begin 1071 :contents-end 1116 :post-blank 1 :post-affiliated 1071 :mode nil :granularity nil :parent #103) #("First create the gn2 tar archive by running:\n" 0 45 (:parent #107))) (src-block (:language "sh" :switches nil :parameters nil :begin 1117 :end 1343 :number-lines nil :preserve-indent nil :retain-labels t :use-labels t :label-fmt nil :value "env GUIX_PACKAGE_PATH=\"/home/bonface/projects/guix-bioinformatics:/home/bonface/projects/guix-past/modules\" \\\n ./pre-inst-env guix pack --no-grafts\\\n -S /gn2-profile=/ \\\n screen genenetwork2\n" :post-blank 1 :post-affiliated 1117 :mode nil :granularity nil :parent #103)) (paragraph (:begin 1343 :end 1387 :contents-begin 1343 :contents-end 1386 :post-blank 1 :post-affiliated 1343 :mode nil :granularity nil :parent #103) #("The output will look something similar to:\n" 0 43 (:parent #109))) (fixed-width (:begin 1387 :end 1454 :value "/gnu/store/x3m77vwaqcwba24p5s4lrb7w2ii16lj9-tarball-pack.tar.gz" :post-blank 2 :post-affiliated 1387 :mode nil :granularity nil :parent #103)) (paragraph (:begin 1454 :end 1640 :contents-begin 1454 :contents-end 1639 :post-blank 1 :post-affiliated 1454 :mode nil :granularity nil :parent #103) #("Now create a folder from which will host the following dockerfile. You\ncan name this file Dockerfile. Note that mariadb is the base image\nsince it already has mariadb installed for us.\n" 0 185 (:parent #111))) (src-block (:language "conf" :switches nil :parameters nil :begin 1640 :end 1847 :number-lines nil :preserve-indent nil :retain-labels t :use-labels t :label-fmt nil :value "FROM mariadb:latest\n\nCOPY ./gn2.tar.gz /tmp/gn2.tar.gz\nRUN tar -xzf /tmp/gn2.tar.gz -C / && rm -f /tmp/gn2.tar.gz && \\\n mkdir -p /usr/local/mysql /genotype_files/genotype/json\n" :post-blank 1 :post-affiliated 1640 :mode nil :granularity nil :parent #103)) (paragraph (:begin 1847 :end 1895 :contents-begin 1847 :contents-end 1894 :post-blank 1 :post-affiliated 1847 :mode nil :granularity nil :parent #103) #("Build the image(Note the fullstop at the end):\n" 0 47 (:parent #113))) (fixed-width (:begin 1895 :end 1955 :value "sudo docker build -t genenetwork2:latest -f Dockerfile ." :post-blank 2 :post-affiliated 1895 :mode nil :granularity nil :parent #103)) (paragraph (:begin 1955 :end 2009 :contents-begin 1955 :contents-end 2008 :post-blank 1 :post-affiliated 1955 :mode nil :granularity nil :parent #103) #("To load the image interactively you've just created:\n" 0 53 (:parent #115))) (fixed-width (:begin 2009 :end 2054 :value "docker run -ti \"genenetwork2:latest\" bash" :post-blank 2 :post-affiliated 2009 :mode nil :granularity nil :parent #103)) (paragraph (:begin 2054 :end 2141 :contents-begin 2054 :contents-end 2140 :post-blank 1 :post-affiliated 2054 :mode nil :granularity nil :parent #103) #("Assuming you have a docker instance running, you could always run\ncommands in it e.g:\n" 0 86 (:parent #117))) (fixed-width (:begin 2141 :end 2193 :value "docker run \"genenetwork2:latest\" python --version" :post-blank 1 :post-affiliated 2141 :mode nil :granularity nil :parent #103)))) (headline (:raw-value "Pushing to DockerHub" :begin 2194 :end 2817 :pre-blank 1 :contents-begin 2218 :contents-end 2817 :robust-begin 2220 :robust-end 2815 :level 1 :priority nil :tags nil :todo-keyword nil :todo-type nil :post-blank 0 :footnote-section-p nil :archivedp nil :commentedp nil :post-affiliated 2194 :title (#("Pushing to DockerHub" 0 20 (:parent #101))) :mode nil :granularity nil :parent #94) (section (:begin 2218 :end 2817 :contents-begin 2218 :contents-end 2817 :robust-begin 2218 :robust-end 2815 :post-blank 0 :post-affiliated 2218 :mode section :granularity nil :parent #101) (paragraph (:begin 2218 :end 2325 :contents-begin 2218 :contents-end 2324 :post-blank 1 :post-affiliated 2218 :mode planning :granularity nil :parent #104) #("We use DockerHub to store the docker images from which we use on our\nCI environment using Github Actions.\n" 0 106 (:parent #107))) (paragraph (:begin 2325 :end 2447 :contents-begin 2325 :contents-end 2446 :post-blank 1 :post-affiliated 2325 :mode nil :granularity nil :parent #104) #("To push to dockerhub, first get the image name by running " 0 58 (:parent #108)) (verbatim (:begin 2383 :end 2398 :post-blank 0 :value "docker\nimages" :parent #108)) #(". Push to dockerhub using a command similar to:\n" 0 48 (:parent #108))) (fixed-width (:begin 2447 :end 2494 :value "docker push bonfacekilz/genenetwork2:latest" :post-blank 2 :post-affiliated 2447 :mode nil :granularity nil :parent #104)) (paragraph (:begin 2494 :end 2537 :contents-begin 2494 :contents-end 2536 :post-blank 1 :post-affiliated 2494 :mode nil :granularity nil :parent #104) #("Right now, we have 2 images on DockerHub:\n" 0 42 (:parent #110))) (plain-list (:type unordered :begin 2537 :end 2817 :contents-begin 2537 :contents-end 2817 :structure ((2537 0 "- " nil nil nil 2701) (2701 0 "- " nil nil nil 2817)) :post-blank 0 :post-affiliated 2537 :mode nil :granularity nil :parent #104) (item (:bullet "- " :begin 2537 :end 2701 :contents-begin 2539 :contents-end 2701 :checkbox nil :counter nil :structure ((2537 0 "- " nil nil nil 2701) (2701 0 "- " nil nil nil 2817)) :pre-blank 0 :post-blank 0 :post-affiliated 2537 :tag nil :mode item :granularity nil :parent #111) (paragraph (:begin 2539 :end 2701 :contents-begin 2539 :contents-end 2701 :post-blank 0 :post-affiliated 2539 :mode nil :granularity nil :parent #114) (link (:type "https" :path "//hub.docker.com/repository/docker/bonfacekilz/python2-genenetwork2" :format plain :raw-link "https://hub.docker.com/repository/docker/bonfacekilz/python2-genenetwork2" :application nil :search-option nil :begin 2539 :end 2612 :contents-begin nil :contents-end nil :post-blank 0 :parent #117)) #(":\n Contains the python2 version of gn2. Don't use this. Please use the\n python3 image!\n" 0 89 (:parent #117)))) (item (:bullet "- " :begin 2701 :end 2817 :contents-begin 2703 :contents-end 2817 :checkbox nil :counter nil :structure ((2537 0 "- " nil nil nil 2701) (2701 0 "- " nil nil nil 2817)) :pre-blank 0 :post-blank 0 :post-affiliated 2701 :tag nil :mode item :granularity nil :parent #111) (paragraph (:begin 2703 :end 2817 :contents-begin 2703 :contents-end 2817 :post-blank 0 :post-affiliated 2703 :mode nil :granularity nil :parent #115) (link (:type "https" :path "//hub.docker.com/repository/docker/bonfacekilz/python3-genenetwork2" :format plain :raw-link "https://hub.docker.com/repository/docker/bonfacekilz/python3-genenetwork2" :application nil :search-option nil :begin 2703 :end 2776 :contents-begin nil :contents-end nil :post-blank 0 :parent #118)) #(":\n Contains the python3 version of gn2.\n" 0 41 (:parent #118))))))))) #24)) #0)) (item (:bullet "- " :begin 113 :end 147 :contents-begin 115 :contents-end 147 :checkbox nil :counter nil :structure ((113 0 "- " nil nil nil 147) (147 0 "- " nil nil nil 209) (209 0 "- " nil nil nil 259)) :pre-blank 0 :post-blank 0 :post-affiliated 113 :tag nil :mode item :granularity nil :parent #0) (paragraph (:begin 115 :end 147 :contents-begin 115 :contents-end 147 :post-blank 0 :post-affiliated 115 :mode nil :granularity nil :parent #3) (link (:type "custom-id" :path "introduction" :format bracket :raw-link "#introduction" :application nil :search-option nil :begin 115 :end 146 :contents-begin 132 :contents-end 144 :post-blank 0 :parent #6) #("Introduction" 0 12 (:parent #9))) #("\n" 0 1 (:parent #6)))) (item (:bullet "- " :begin 147 :end 209 :contents-begin 149 :contents-end 209 :checkbox nil :counter nil :structure ((113 0 "- " nil nil nil 147) (147 0 "- " nil nil nil 209) (209 0 "- " nil nil nil 259)) :pre-blank 0 :post-blank 0 :post-affiliated 147 :tag nil :mode item :granularity nil :parent #0) (paragraph (:begin 149 :end 209 :contents-begin 149 :contents-end 209 :post-blank 0 :post-affiliated 149 :mode nil :granularity nil :parent #4) (link (:type "custom-id" :path "creating-the-docker-images" :format bracket :raw-link "#creating-the-docker-images" :application nil :search-option nil :begin 149 :end 208 :contents-begin 180 :contents-end 206 :post-blank 0 :parent #7) #("Creating the Docker Images" 0 26 (:parent #10))) #("\n" 0 1 (:parent #7)))) (item (:bullet "- " :begin 209 :end 259 :contents-begin 211 :contents-end 259 :checkbox nil :counter nil :structure ((113 0 "- " nil nil nil 147) (147 0 "- " nil nil nil 209) (209 0 "- " nil nil nil 259)) :pre-blank 0 :post-blank 0 :post-affiliated 209 :tag nil :mode item :granularity nil :parent #0) (paragraph (:begin 211 :end 259 :contents-begin 211 :contents-end 259 :post-blank 0 :post-affiliated 211 :mode nil :granularity nil :parent #5) (link (:type "custom-id" :path "pushing-to-dockerhub" :format bracket :raw-link "#pushing-to-dockerhub" :application nil :search-option nil :begin 211 :end 258 :contents-begin 236 :contents-end 256 :post-blank 0 :parent #8) #("Pushing to DockerHub" 0 20 (:parent #11))) #("\n" 0 1 (:parent #8))))) (:export-options (body-only) :back-end #s(org-export-backend :name html :parent nil :transcoders ((bold . org-html-bold) (center-block . org-html-center-block) (clock . org-html-clock) (code . org-html-code) (drawer . org-html-drawer) (dynamic-block . org-html-dynamic-block) (entity . org-html-entity) (example-block . org-html-example-block) (export-block . org-html-export-block) (export-snippet . org-html-export-snippet) (fixed-width . org-html-fixed-width) (footnote-reference . org-html-footnote-reference) (headline . org-html-headline) (horizontal-rule . org-html-horizontal-rule) (inline-src-block . org-html-inline-src-block) (inlinetask . org-html-inlinetask) (inner-template . org-html-inner-template) (italic . org-html-italic) (item . org-html-item) (keyword . org-html-keyword) (latex-environment . org-html-latex-environment) (latex-fragment . org-html-latex-fragment) (line-break . org-html-line-break) (link . org-html-link) (node-property . org-html-node-property) (paragraph . org-html-paragraph) (plain-list . org-html-plain-list) (plain-text . org-html-plain-text) (planning . org-html-planning) (property-drawer . org-html-property-drawer) (quote-block . org-html-quote-block) (radio-target . org-html-radio-target) (section . org-html-section) (special-block . org-html-special-block) (src-block . org-html-src-block) (statistics-cookie . org-html-statistics-cookie) (strike-through . org-html-strike-through) (subscript . org-html-subscript) (superscript . org-html-superscript) (table . org-html-table) (table-cell . org-html-table-cell) (table-row . org-html-table-row) (target . org-html-target) (template . org-html-template) (timestamp . org-html-timestamp) (underline . org-html-underline) (verbatim . org-html-verbatim) (verse-block . org-html-verse-block)) :options ((:html-doctype "HTML_DOCTYPE" nil org-html-doctype) (:html-container "HTML_CONTAINER" nil org-html-container-element) (:html-content-class "HTML_CONTENT_CLASS" nil org-html-content-class) (:description "DESCRIPTION" nil nil newline) (:keywords "KEYWORDS" nil nil space) (:html-html5-fancy nil "html5-fancy" org-html-html5-fancy) (:html-link-use-abs-url nil "html-link-use-abs-url" org-html-link-use-abs-url) (:html-link-home "HTML_LINK_HOME" nil org-html-link-home) (:html-link-up "HTML_LINK_UP" nil org-html-link-up) (:html-mathjax "HTML_MATHJAX" nil "" space) (:html-equation-reference-format "HTML_EQUATION_REFERENCE_FORMAT" nil org-html-equation-reference-format t) (:html-postamble nil "html-postamble" org-html-postamble) (:html-preamble nil "html-preamble" org-html-preamble) (:html-head "HTML_HEAD" nil org-html-head newline) (:html-head-extra "HTML_HEAD_EXTRA" nil org-html-head-extra newline) (:subtitle "SUBTITLE" nil nil parse) (:html-head-include-default-style nil "html-style" org-html-head-include-default-style) (:html-head-include-scripts nil "html-scripts" org-html-head-include-scripts) (:html-allow-name-attribute-in-anchors nil nil org-html-allow-name-attribute-in-anchors) (:html-divs nil nil org-html-divs) (:html-checkbox-type nil nil org-html-checkbox-type) (:html-extension nil nil org-html-extension) (:html-footnote-format nil nil org-html-footnote-format) (:html-footnote-separator nil nil org-html-footnote-separator) (:html-footnotes-section nil nil org-html-footnotes-section) (:html-format-drawer-function nil nil org-html-format-drawer-function) (:html-format-headline-function nil nil org-html-format-headline-function) (:html-format-inlinetask-function nil nil org-html-format-inlinetask-function) (:html-home/up-format nil nil org-html-home/up-format) (:html-indent nil nil org-html-indent) (:html-infojs-options nil nil org-html-infojs-options) (:html-infojs-template nil nil org-html-infojs-template) (:html-inline-image-rules nil nil org-html-inline-image-rules) (:html-link-org-files-as-html nil nil org-html-link-org-files-as-html) (:html-mathjax-options nil nil org-html-mathjax-options) (:html-mathjax-template nil nil org-html-mathjax-template) (:html-metadata-timestamp-format nil nil org-html-metadata-timestamp-format) (:html-postamble-format nil nil org-html-postamble-format) (:html-preamble-format nil nil org-html-preamble-format) (:html-prefer-user-labels nil nil org-html-prefer-user-labels) (:html-self-link-headlines nil nil org-html-self-link-headlines) (:html-table-align-individual-fields nil nil org-html-table-align-individual-fields) (:html-table-caption-above nil nil org-html-table-caption-above) (:html-table-data-tags nil nil org-html-table-data-tags) (:html-table-header-tags nil nil org-html-table-header-tags) (:html-table-use-header-tags-for-first-column nil nil org-html-table-use-header-tags-for-first-column) (:html-tag-class-prefix nil nil org-html-tag-class-prefix) (:html-text-markup-alist nil nil org-html-text-markup-alist) (:html-todo-kwd-class-prefix nil nil org-html-todo-kwd-class-prefix) (:html-toplevel-hlevel nil nil org-html-toplevel-hlevel) (:html-use-infojs nil nil org-html-use-infojs) (:html-validation-link nil nil org-html-validation-link) (:html-viewport nil nil org-html-viewport) (:html-inline-images nil nil org-html-inline-images) (:html-table-attributes nil nil org-html-table-default-attributes) (:html-table-row-open-tag nil nil org-html-table-row-open-tag) (:html-table-row-close-tag nil nil org-html-table-row-close-tag) (:html-xml-declaration nil nil org-html-xml-declaration) (:html-wrap-src-lines nil nil org-html-wrap-src-lines) (:html-klipsify-src nil nil org-html-klipsify-src) (:html-klipse-css nil nil org-html-klipse-css) (:html-klipse-js nil nil org-html-klipse-js) (:html-klipse-selection-script nil nil org-html-klipse-selection-script) (:infojs-opt "INFOJS_OPT" nil nil) (:creator "CREATOR" nil org-html-creator-string) (:with-latex nil "tex" org-html-with-latex) (:latex-header "LATEX_HEADER" nil nil newline)) :filters ((:filter-options . org-html-infojs-install-script) (:filter-parse-tree . org-html-image-link-filter) (:filter-final-output . org-html-final-function)) :blocks nil :menu (104 "Export to HTML" ((72 "As HTML buffer" org-html-export-as-html) (104 "As HTML file" org-html-export-to-html) (111 "As HTML file and open" (lambda (a s v b) (if a (org-html-export-to-html t s v b) (org-open-file (org-html-export-to-html nil s v b)))))))) :translate-alist ((bold . org-html-bold) (center-block . org-html-center-block) (clock . org-html-clock) (code . org-html-code) (drawer . org-html-drawer) (dynamic-block . org-html-dynamic-block) (entity . org-html-entity) (example-block . org-html-example-block) (export-block . org-html-export-block) (export-snippet . org-html-export-snippet) (fixed-width . org-html-fixed-width) (footnote-reference . org-html-footnote-reference) (headline . org-html-headline) (horizontal-rule . org-html-horizontal-rule) (inline-src-block . org-html-inline-src-block) (inlinetask . org-html-inlinetask) (inner-template . org-html-inner-template) (italic . org-html-italic) (item . org-html-item) (keyword . org-html-keyword) (latex-environment . org-html-latex-environment) (latex-fragment . org-html-latex-fragment) (line-break . org-html-line-break) (link . org-html-link) (node-property . org-html-node-property) (paragraph . org-html-paragraph) (plain-list . org-html-plain-list) (plain-text . org-html-plain-text) (planning . org-html-planning) (property-drawer . org-html-property-drawer) (quote-block . org-html-quote-block) (radio-target . org-html-radio-target) (section . org-html-section) (special-block . org-html-special-block) (src-block . org-html-src-block) (statistics-cookie . org-html-statistics-cookie) (strike-through . org-html-strike-through) (subscript . org-html-subscript) (superscript . org-html-superscript) (table . org-html-table) (table-cell . org-html-table-cell) (table-row . org-html-table-row) (target . org-html-target) (template . org-html-template) (timestamp . org-html-timestamp) (underline . org-html-underline) (verbatim . org-html-verbatim) (verse-block . org-html-verse-block)) :exported-data # :input-buffer " *temp*" :input-file nil :html-doctype "xhtml-strict" :html-container "div" :html-content-class "content" :description nil :keywords nil :html-html5-fancy nil :html-link-use-abs-url nil :html-link-home "" :html-link-up "" :html-mathjax "" :html-equation-reference-format "\\eqref{%s}" :html-postamble auto :html-preamble t :html-head "" :html-head-extra "" :subtitle nil :html-head-include-default-style t :html-head-include-scripts nil :html-allow-name-attribute-in-anchors nil :html-divs ((preamble "div" "preamble") (content "div" "content") (postamble "div" "postamble")) :html-checkbox-type ascii :html-extension "html" :html-footnote-format "%s" :html-footnote-separator ", " :html-footnotes-section "
\n

%s:

\n
\n%s\n
\n
" :html-format-drawer-function #f(compiled-function (name contents) #) :html-format-headline-function org-html-format-headline-default-function :html-format-inlinetask-function org-html-format-inlinetask-default-function :html-home/up-format "
\n UP \n |\n HOME \n
" :html-indent nil :html-infojs-options ((path . "https://orgmode.org/org-info.js") (view . "info") (toc . :with-toc) (ftoc . "0") (tdepth . "max") (sdepth . "max") (mouse . "underline") (buttons . "0") (ltoc . "1") (up . :html-link-up) (home . :html-link-home)) :html-infojs-template "\n\n" :html-inline-image-rules (("file" . "\\(?:\\.\\(?:gif\\|jp\\(?:e?g\\)\\|png\\|svg\\|webp\\)\\)") ("http" . "\\(?:\\.\\(?:gif\\|jp\\(?:e?g\\)\\|png\\|svg\\|webp\\)\\)") ("https" . "\\(?:\\.\\(?:gif\\|jp\\(?:e?g\\)\\|png\\|svg\\|webp\\)\\)")) :html-link-org-files-as-html t :html-mathjax-options ((path "https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-mml-chtml.js") (scale 1.0) (align "center") (font "mathjax-modern") (overflow "overflow") (tags "ams") (indent "0em") (multlinewidth "85%") (tagindent ".8em") (tagside "right")) :html-mathjax-template "\n\n\n" :html-metadata-timestamp-format "%Y-%m-%d %a %H:%M" :html-postamble-format (("en" "

Author: %a (%e)

\n

Date: %d

\n

%c

\n

%v

")) :html-preamble-format (("en" "")) :html-prefer-user-labels nil :html-self-link-headlines nil :html-table-align-individual-fields t :html-table-caption-above t :html-table-data-tags ("" . "") :html-table-header-tags ("" . "") :html-table-use-header-tags-for-first-column nil :html-tag-class-prefix "" :html-text-markup-alist ((bold . "%s") (code . "%s") (italic . "%s") (strike-through . "%s") (underline . "%s") (verbatim . "%s")) :html-todo-kwd-class-prefix "" :html-toplevel-hlevel 2 :html-use-infojs when-configured :html-validation-link "Validate" :html-viewport ((width "device-width") (initial-scale "1") (minimum-scale "") (maximum-scale "") (user-scalable "")) :html-inline-images t :html-table-attributes (:border "2" :cellspacing "0" :cellpadding "6" :rules "groups" :frame "hsides") :html-table-row-open-tag "" :html-table-row-close-tag "" :html-xml-declaration (("html" . "") ("php" . "\"; ?>")) :html-wrap-src-lines nil :html-klipsify-src nil :html-klipse-css "https://storage.googleapis.com/app.klipse.tech/css/codemirror.css" :html-klipse-js "https://storage.googleapis.com/app.klipse.tech/plugin_prod/js/klipse_plugin.min.js" :html-klipse-selection-script "window.klipse_settings = {selector_eval_html: '.src-html',\n selector_eval_js: '.src-js',\n selector_eval_python_client: '.src-python',\n selector_eval_scheme: '.src-scheme',\n selector: '.src-clojure',\n selector_eval_ruby: '.src-ruby'};" :infojs-opt nil :creator "Emacs 29.4 (Org mode 9.6.15)" :with-latex t :latex-header nil :title (#("Genenetwork2 Dockerized" 0 23 (:parent #148))) :date nil :author (#("unknown" 0 7 (:parent #152))) :email "unknown@genenetwork-development" :language "en" :select-tags ("export") :exclude-tags ("noexport") :headline-levels 3 :preserve-breaks nil :section-numbers nil :time-stamp-file t :with-archived-trees headline :with-author t :with-broken-links nil :with-clocks nil :with-creator nil :with-date t :with-drawers (not "LOGBOOK") :with-email nil :with-emphasize t :with-entities t :with-fixed-width t :with-footnotes t :with-inlinetasks t :with-planning nil :with-priority nil :with-properties nil :with-smart-quotes nil :with-special-strings t :with-statistics-cookies t :with-sub-superscript t :with-toc nil :with-tables t :with-tags t :with-tasks t :with-timestamps t :with-title t :with-todo-keywords t :cite-export (basic nil nil) :bibliography nil :filter-body nil :filter-bold nil :filter-babel-call nil :filter-center-block nil :filter-clock nil :filter-code nil :filter-diary-sexp nil :filter-drawer nil :filter-dynamic-block nil :filter-entity nil :filter-example-block nil :filter-export-block nil :filter-export-snippet nil :filter-final-output (org-html-final-function) :filter-fixed-width nil :filter-footnote-definition nil :filter-footnote-reference nil :filter-headline nil :filter-horizontal-rule nil :filter-inline-babel-call nil :filter-inline-src-block nil :filter-inlinetask nil :filter-italic nil :filter-item nil :filter-keyword nil :filter-latex-environment nil :filter-latex-fragment nil :filter-line-break nil :filter-link nil :filter-node-property nil :filter-options (org-html-infojs-install-script) :filter-paragraph nil :filter-parse-tree (org-html-image-link-filter) :filter-plain-list nil :filter-plain-text nil :filter-planning nil :filter-property-drawer nil :filter-quote-block nil :filter-radio-target nil :filter-section nil :filter-special-block nil :filter-src-block nil :filter-statistics-cookie nil :filter-strike-through nil :filter-subscript nil :filter-superscript nil :filter-table nil :filter-table-cell nil :filter-table-row nil :filter-target nil :filter-timestamp nil :filter-underline nil :filter-verbatim nil :filter-verse-block nil :ignore-list nil :parse-tree (org-data (:begin 1 :contents-begin 1 :contents-end 2817 :end 2817 :robust-begin 3 :robust-end 2815 :post-blank 0 :post-affiliated 1 :path nil :mode org-data :CATEGORY nil :granularity nil) (section (:begin 1 :end 35 :contents-begin 1 :contents-end 34 :robust-begin 1 :robust-end 32 :post-blank 1 :post-affiliated 1 :mode first-section :granularity nil :parent #338) (keyword (:key "TITLE" :value "Genenetwork2 Dockerized" :begin 1 :end 34 :post-blank 0 :post-affiliated 1 :mode top-comment :granularity nil :parent #341))) (headline (:raw-value "Table of Contents" :begin 35 :end 260 :pre-blank 0 :contents-begin 113 :contents-end 259 :robust-begin 115 :robust-end 257 :level 1 :priority nil :tags ("TOC") :todo-keyword nil :todo-type nil :post-blank 1 :footnote-section-p nil :archivedp nil :commentedp nil :post-affiliated 35 :title (#("Table of Contents" 0 17 (:parent #342))) :mode nil :granularity nil :parent #338) (section (:begin 113 :end 260 :contents-begin 113 :contents-end 259 :robust-begin 113 :robust-end 257 :post-blank 1 :post-affiliated 113 :mode section :granularity nil :parent #342) (plain-list (:type unordered :begin 113 :end 259 :contents-begin 113 :contents-end 259 :structure ((113 0 "- " nil nil nil 147) (147 0 "- " nil nil nil 209) (209 0 "- " nil nil nil 259)) :post-blank 0 :post-affiliated 113 :mode planning :granularity nil :parent #345) (item (:bullet "- " :begin 113 :end 147 :contents-begin 115 :contents-end 147 :checkbox nil :counter nil :structure ((113 0 "- " nil nil nil 147) (147 0 "- " nil nil nil 209) (209 0 "- " nil nil nil 259)) :pre-blank 0 :post-blank 0 :post-affiliated 113 :tag nil :mode item :granularity nil :parent #348) (paragraph (:begin 115 :end 147 :contents-begin 115 :contents-end 147 :post-blank 0 :post-affiliated 115 :mode nil :granularity nil :parent #351) (link (:type "custom-id" :path "introduction" :format bracket :raw-link "#introduction" :application nil :search-option nil :begin 115 :end 146 :contents-begin 132 :contents-end 144 :post-blank 0 :parent #354) #("Introduction" 0 12 (:parent #357))) #("\n" 0 1 (:parent #354)))) (item (:bullet "- " :begin 147 :end 209 :contents-begin 149 :contents-end 209 :checkbox nil :counter nil :structure ((113 0 "- " nil nil nil 147) (147 0 "- " nil nil nil 209) (209 0 "- " nil nil nil 259)) :pre-blank 0 :post-blank 0 :post-affiliated 147 :tag nil :mode item :granularity nil :parent #348) (paragraph (:begin 149 :end 209 :contents-begin 149 :contents-end 209 :post-blank 0 :post-affiliated 149 :mode nil :granularity nil :parent #352) (link (:type "custom-id" :path "creating-the-docker-images" :format bracket :raw-link "#creating-the-docker-images" :application nil :search-option nil :begin 149 :end 208 :contents-begin 180 :contents-end 206 :post-blank 0 :parent #355) #("Creating the Docker Images" 0 26 (:parent #358))) #("\n" 0 1 (:parent #355)))) (item (:bullet "- " :begin 209 :end 259 :contents-begin 211 :contents-end 259 :checkbox nil :counter nil :structure ((113 0 "- " nil nil nil 147) (147 0 "- " nil nil nil 209) (209 0 "- " nil nil nil 259)) :pre-blank 0 :post-blank 0 :post-affiliated 209 :tag nil :mode item :granularity nil :parent #348) (paragraph (:begin 211 :end 259 :contents-begin 211 :contents-end 259 :post-blank 0 :post-affiliated 211 :mode nil :granularity nil :parent #353) (link (:type "custom-id" :path "pushing-to-dockerhub" :format bracket :raw-link "#pushing-to-dockerhub" :application nil :search-option nil :begin 211 :end 258 :contents-begin 236 :contents-end 256 :post-blank 0 :parent #356) #("Pushing to DockerHub" 0 20 (:parent #359))) #("\n" 0 1 (:parent #356))))))) (headline (:raw-value "Introduction" :begin 260 :end 926 :pre-blank 1 :contents-begin 276 :contents-end 925 :robust-begin 278 :robust-end 923 :level 1 :priority nil :tags nil :todo-keyword nil :todo-type nil :post-blank 1 :footnote-section-p nil :archivedp nil :commentedp nil :post-affiliated 260 :title (#("Introduction" 0 12 (:parent #343))) :mode nil :granularity nil :parent #338) (section (:begin 276 :end 926 :contents-begin 276 :contents-end 925 :robust-begin 276 :robust-end 923 :post-blank 1 :post-affiliated 276 :mode section :granularity nil :parent #343) (paragraph (:begin 276 :end 600 :contents-begin 276 :contents-end 599 :post-blank 1 :post-affiliated 276 :mode planning :granularity nil :parent #346) #("The CI(Continuous Integration) system for Genenetwork2 uses " 0 60 (:parent #349)) (link (:type "https" :path "//github.com/features/actions" :format bracket :raw-link "https://github.com/features/actions" :application nil :search-option nil :begin 336 :end 391 :contents-begin 375 :contents-end 389 :post-blank 0 :parent #349) #("Github\nActions" 0 14 (:parent #353))) #(". As such, it's important to have a way to run tests using\nfacilities provided by GUIX in a reproducible way. This project\nleverages GUIX to generate a docker container from which the unittests\nare ran from.\n" 0 208 (:parent #349))) (paragraph (:begin 600 :end 830 :contents-begin 600 :contents-end 829 :post-blank 1 :post-affiliated 600 :mode nil :granularity nil :parent #346) #("Find instructions on how to set docker up inside GUIX " 0 54 (:parent #350)) (link (:type "https" :path "//github.com/pjotrp/guix-notes/blob/master/CONTAINERS.org#run-docker" :format bracket :raw-link "https://github.com/pjotrp/guix-notes/blob/master/CONTAINERS.org#run-docker" :application nil :search-option nil :begin 654 :end 738 :contents-begin 732 :contents-end 736 :post-blank 0 :parent #350) #("here" 0 4 (:parent #354))) #(". This\ndocument will not get into that. It's assumed that you have a working\ndocker setup.\n" 0 91 (:parent #350))) (paragraph (:begin 830 :end 925 :contents-begin 830 :contents-end 925 :post-blank 0 :post-affiliated 830 :mode nil :granularity nil :parent #346) #("The rest of this document outlines how the docker container used in\nthe CI builds was created.\n" 0 95 (:parent #351))))) (headline (:raw-value "Creating the Docker Images" :begin 926 :end 2194 :pre-blank 1 :contents-begin 956 :contents-end 2193 :robust-begin 958 :robust-end 2191 :level 1 :priority nil :tags nil :todo-keyword nil :todo-type nil :post-blank 1 :footnote-section-p nil :archivedp nil :commentedp nil :post-affiliated 926 :title (#("Creating the Docker Images" 0 26 (:parent #344))) :mode nil :granularity nil :parent #338) (section (:begin 956 :end 2194 :contents-begin 956 :contents-end 2193 :robust-begin 956 :robust-end 2191 :post-blank 1 :post-affiliated 956 :mode section :granularity nil :parent #344) (paragraph (:begin 956 :end 1071 :contents-begin 956 :contents-end 1070 :post-blank 1 :post-affiliated 956 :mode planning :granularity nil :parent #347) #("The general idea is that GUIX is used to generate a set of binaries,\nwhich will be added to a base mariaDB image.\n" 0 114 (:parent #350))) (paragraph (:begin 1071 :end 1117 :contents-begin 1071 :contents-end 1116 :post-blank 1 :post-affiliated 1071 :mode nil :granularity nil :parent #347) #("First create the gn2 tar archive by running:\n" 0 45 (:parent #351))) (src-block (:language "sh" :switches nil :parameters nil :begin 1117 :end 1343 :number-lines nil :preserve-indent nil :retain-labels t :use-labels t :label-fmt nil :value "env GUIX_PACKAGE_PATH=\"/home/bonface/projects/guix-bioinformatics:/home/bonface/projects/guix-past/modules\" \\\n ./pre-inst-env guix pack --no-grafts\\\n -S /gn2-profile=/ \\\n screen genenetwork2\n" :post-blank 1 :post-affiliated 1117 :mode nil :granularity nil :parent #347)) (paragraph (:begin 1343 :end 1387 :contents-begin 1343 :contents-end 1386 :post-blank 1 :post-affiliated 1343 :mode nil :granularity nil :parent #347) #("The output will look something similar to:\n" 0 43 (:parent #353))) (fixed-width (:begin 1387 :end 1454 :value "/gnu/store/x3m77vwaqcwba24p5s4lrb7w2ii16lj9-tarball-pack.tar.gz" :post-blank 2 :post-affiliated 1387 :mode nil :granularity nil :parent #347)) (paragraph (:begin 1454 :end 1640 :contents-begin 1454 :contents-end 1639 :post-blank 1 :post-affiliated 1454 :mode nil :granularity nil :parent #347) #("Now create a folder from which will host the following dockerfile. You\ncan name this file Dockerfile. Note that mariadb is the base image\nsince it already has mariadb installed for us.\n" 0 185 (:parent #355))) (src-block (:language "conf" :switches nil :parameters nil :begin 1640 :end 1847 :number-lines nil :preserve-indent nil :retain-labels t :use-labels t :label-fmt nil :value "FROM mariadb:latest\n\nCOPY ./gn2.tar.gz /tmp/gn2.tar.gz\nRUN tar -xzf /tmp/gn2.tar.gz -C / && rm -f /tmp/gn2.tar.gz && \\\n mkdir -p /usr/local/mysql /genotype_files/genotype/json\n" :post-blank 1 :post-affiliated 1640 :mode nil :granularity nil :parent #347)) (paragraph (:begin 1847 :end 1895 :contents-begin 1847 :contents-end 1894 :post-blank 1 :post-affiliated 1847 :mode nil :granularity nil :parent #347) #("Build the image(Note the fullstop at the end):\n" 0 47 (:parent #357))) (fixed-width (:begin 1895 :end 1955 :value "sudo docker build -t genenetwork2:latest -f Dockerfile ." :post-blank 2 :post-affiliated 1895 :mode nil :granularity nil :parent #347)) (paragraph (:begin 1955 :end 2009 :contents-begin 1955 :contents-end 2008 :post-blank 1 :post-affiliated 1955 :mode nil :granularity nil :parent #347) #("To load the image interactively you've just created:\n" 0 53 (:parent #359))) (fixed-width (:begin 2009 :end 2054 :value "docker run -ti \"genenetwork2:latest\" bash" :post-blank 2 :post-affiliated 2009 :mode nil :granularity nil :parent #347)) (paragraph (:begin 2054 :end 2141 :contents-begin 2054 :contents-end 2140 :post-blank 1 :post-affiliated 2054 :mode nil :granularity nil :parent #347) #("Assuming you have a docker instance running, you could always run\ncommands in it e.g:\n" 0 86 (:parent #361))) (fixed-width (:begin 2141 :end 2193 :value "docker run \"genenetwork2:latest\" python --version" :post-blank 1 :post-affiliated 2141 :mode nil :granularity nil :parent #347)))) (headline (:raw-value "Pushing to DockerHub" :begin 2194 :end 2817 :pre-blank 1 :contents-begin 2218 :contents-end 2817 :robust-begin 2220 :robust-end 2815 :level 1 :priority nil :tags nil :todo-keyword nil :todo-type nil :post-blank 0 :footnote-section-p nil :archivedp nil :commentedp nil :post-affiliated 2194 :title (#("Pushing to DockerHub" 0 20 (:parent #345))) :mode nil :granularity nil :parent #338) (section (:begin 2218 :end 2817 :contents-begin 2218 :contents-end 2817 :robust-begin 2218 :robust-end 2815 :post-blank 0 :post-affiliated 2218 :mode section :granularity nil :parent #345) (paragraph (:begin 2218 :end 2325 :contents-begin 2218 :contents-end 2324 :post-blank 1 :post-affiliated 2218 :mode planning :granularity nil :parent #348) #("We use DockerHub to store the docker images from which we use on our\nCI environment using Github Actions.\n" 0 106 (:parent #351))) (paragraph (:begin 2325 :end 2447 :contents-begin 2325 :contents-end 2446 :post-blank 1 :post-affiliated 2325 :mode nil :granularity nil :parent #348) #("To push to dockerhub, first get the image name by running " 0 58 (:parent #352)) (verbatim (:begin 2383 :end 2398 :post-blank 0 :value "docker\nimages" :parent #352)) #(". Push to dockerhub using a command similar to:\n" 0 48 (:parent #352))) (fixed-width (:begin 2447 :end 2494 :value "docker push bonfacekilz/genenetwork2:latest" :post-blank 2 :post-affiliated 2447 :mode nil :granularity nil :parent #348)) (paragraph (:begin 2494 :end 2537 :contents-begin 2494 :contents-end 2536 :post-blank 1 :post-affiliated 2494 :mode nil :granularity nil :parent #348) #("Right now, we have 2 images on DockerHub:\n" 0 42 (:parent #354))) (plain-list (:type unordered :begin 2537 :end 2817 :contents-begin 2537 :contents-end 2817 :structure ((2537 0 "- " nil nil nil 2701) (2701 0 "- " nil nil nil 2817)) :post-blank 0 :post-affiliated 2537 :mode nil :granularity nil :parent #348) (item (:bullet "- " :begin 2537 :end 2701 :contents-begin 2539 :contents-end 2701 :checkbox nil :counter nil :structure ((2537 0 "- " nil nil nil 2701) (2701 0 "- " nil nil nil 2817)) :pre-blank 0 :post-blank 0 :post-affiliated 2537 :tag nil :mode item :granularity nil :parent #355) (paragraph (:begin 2539 :end 2701 :contents-begin 2539 :contents-end 2701 :post-blank 0 :post-affiliated 2539 :mode nil :granularity nil :parent #358) (link (:type "https" :path "//hub.docker.com/repository/docker/bonfacekilz/python2-genenetwork2" :format plain :raw-link "https://hub.docker.com/repository/docker/bonfacekilz/python2-genenetwork2" :application nil :search-option nil :begin 2539 :end 2612 :contents-begin nil :contents-end nil :post-blank 0 :parent #361)) #(":\n Contains the python2 version of gn2. Don't use this. Please use the\n python3 image!\n" 0 89 (:parent #361)))) (item (:bullet "- " :begin 2701 :end 2817 :contents-begin 2703 :contents-end 2817 :checkbox nil :counter nil :structure ((2537 0 "- " nil nil nil 2701) (2701 0 "- " nil nil nil 2817)) :pre-blank 0 :post-blank 0 :post-affiliated 2701 :tag nil :mode item :granularity nil :parent #355) (paragraph (:begin 2703 :end 2817 :contents-begin 2703 :contents-end 2817 :post-blank 0 :post-affiliated 2703 :mode nil :granularity nil :parent #359) (link (:type "https" :path "//hub.docker.com/repository/docker/bonfacekilz/python3-genenetwork2" :format plain :raw-link "https://hub.docker.com/repository/docker/bonfacekilz/python3-genenetwork2" :application nil :search-option nil :begin 2703 :end 2776 :contents-begin nil :contents-end nil :post-blank 0 :parent #362)) #(":\n Contains the python3 version of gn2.\n" 0 41 (:parent #362)))))))) :headline-offset 0 :headline-numbering nil :id-alist nil :citations nil :id-local-cache #)) #f(compiled-function (element) #)((plain-list (:type unordered :begin 113 :end 259 :contents-begin 113 :contents-end 259 :structure ((113 0 "- " nil nil nil 147) (147 0 "- " nil nil nil 209) (209 0 "- " nil nil nil 259)) :post-blank 0 :post-affiliated 113 :mode planning :granularity nil :parent (section (:begin 113 :end 260 :contents-begin 113 :contents-end 259 :robust-begin 113 :robust-end 257 :post-blank 1 :post-affiliated 113 :mode section :granularity nil :parent (headline (:raw-value "Table of Contents" :begin 35 :end 260 :pre-blank 0 :contents-begin 113 :contents-end 259 :robust-begin 115 :robust-end 257 :level 1 :priority nil :tags ("TOC") :todo-keyword nil :todo-type nil :post-blank 1 :footnote-section-p nil :archivedp nil :commentedp nil :post-affiliated 35 :title (#("Table of Contents" 0 17 (:parent #48))) :mode nil :granularity nil :parent (org-data (:begin 1 :contents-begin 1 :contents-end 2817 :end 2817 :robust-begin 3 :robust-end 2815 :post-blank 0 :post-affiliated 1 :path nil :mode org-data :CATEGORY nil :granularity nil) (section (:begin 1 :end 35 :contents-begin 1 :contents-end 34 :robust-begin 1 :robust-end 32 :post-blank 1 :post-affiliated 1 :mode first-section :granularity nil :parent #94) (keyword (:key "TITLE" :value "Genenetwork2 Dockerized" :begin 1 :end 34 :post-blank 0 :post-affiliated 1 :mode top-comment :granularity nil :parent #97))) #48 (headline (:raw-value "Introduction" :begin 260 :end 926 :pre-blank 1 :contents-begin 276 :contents-end 925 :robust-begin 278 :robust-end 923 :level 1 :priority nil :tags nil :todo-keyword nil :todo-type nil :post-blank 1 :footnote-section-p nil :archivedp nil :commentedp nil :post-affiliated 260 :title (#("Introduction" 0 12 (:parent #99))) :mode nil :granularity nil :parent #94) (section (:begin 276 :end 926 :contents-begin 276 :contents-end 925 :robust-begin 276 :robust-end 923 :post-blank 1 :post-affiliated 276 :mode section :granularity nil :parent #99) (paragraph (:begin 276 :end 600 :contents-begin 276 :contents-end 599 :post-blank 1 :post-affiliated 276 :mode planning :granularity nil :parent #102) #("The CI(Continuous Integration) system for Genenetwork2 uses " 0 60 (:parent #105)) (link (:type "https" :path "//github.com/features/actions" :format bracket :raw-link "https://github.com/features/actions" :application nil :search-option nil :begin 336 :end 391 :contents-begin 375 :contents-end 389 :post-blank 0 :parent #105) #("Github\nActions" 0 14 (:parent #109))) #(". As such, it's important to have a way to run tests using\nfacilities provided by GUIX in a reproducible way. This project\nleverages GUIX to generate a docker container from which the unittests\nare ran from.\n" 0 208 (:parent #105))) (paragraph (:begin 600 :end 830 :contents-begin 600 :contents-end 829 :post-blank 1 :post-affiliated 600 :mode nil :granularity nil :parent #102) #("Find instructions on how to set docker up inside GUIX " 0 54 (:parent #106)) (link (:type "https" :path "//github.com/pjotrp/guix-notes/blob/master/CONTAINERS.org#run-docker" :format bracket :raw-link "https://github.com/pjotrp/guix-notes/blob/master/CONTAINERS.org#run-docker" :application nil :search-option nil :begin 654 :end 738 :contents-begin 732 :contents-end 736 :post-blank 0 :parent #106) #("here" 0 4 (:parent #110))) #(". This\ndocument will not get into that. It's assumed that you have a working\ndocker setup.\n" 0 91 (:parent #106))) (paragraph (:begin 830 :end 925 :contents-begin 830 :contents-end 925 :post-blank 0 :post-affiliated 830 :mode nil :granularity nil :parent #102) #("The rest of this document outlines how the docker container used in\nthe CI builds was created.\n" 0 95 (:parent #107))))) (headline (:raw-value "Creating the Docker Images" :begin 926 :end 2194 :pre-blank 1 :contents-begin 956 :contents-end 2193 :robust-begin 958 :robust-end 2191 :level 1 :priority nil :tags nil :todo-keyword nil :todo-type nil :post-blank 1 :footnote-section-p nil :archivedp nil :commentedp nil :post-affiliated 926 :title (#("Creating the Docker Images" 0 26 (:parent #100))) :mode nil :granularity nil :parent #94) (section (:begin 956 :end 2194 :contents-begin 956 :contents-end 2193 :robust-begin 956 :robust-end 2191 :post-blank 1 :post-affiliated 956 :mode section :granularity nil :parent #100) (paragraph (:begin 956 :end 1071 :contents-begin 956 :contents-end 1070 :post-blank 1 :post-affiliated 956 :mode planning :granularity nil :parent #103) #("The general idea is that GUIX is used to generate a set of binaries,\nwhich will be added to a base mariaDB image.\n" 0 114 (:parent #106))) (paragraph (:begin 1071 :end 1117 :contents-begin 1071 :contents-end 1116 :post-blank 1 :post-affiliated 1071 :mode nil :granularity nil :parent #103) #("First create the gn2 tar archive by running:\n" 0 45 (:parent #107))) (src-block (:language "sh" :switches nil :parameters nil :begin 1117 :end 1343 :number-lines nil :preserve-indent nil :retain-labels t :use-labels t :label-fmt nil :value "env GUIX_PACKAGE_PATH=\"/home/bonface/projects/guix-bioinformatics:/home/bonface/projects/guix-past/modules\" \\\n ./pre-inst-env guix pack --no-grafts\\\n -S /gn2-profile=/ \\\n screen genenetwork2\n" :post-blank 1 :post-affiliated 1117 :mode nil :granularity nil :parent #103)) (paragraph (:begin 1343 :end 1387 :contents-begin 1343 :contents-end 1386 :post-blank 1 :post-affiliated 1343 :mode nil :granularity nil :parent #103) #("The output will look something similar to:\n" 0 43 (:parent #109))) (fixed-width (:begin 1387 :end 1454 :value "/gnu/store/x3m77vwaqcwba24p5s4lrb7w2ii16lj9-tarball-pack.tar.gz" :post-blank 2 :post-affiliated 1387 :mode nil :granularity nil :parent #103)) (paragraph (:begin 1454 :end 1640 :contents-begin 1454 :contents-end 1639 :post-blank 1 :post-affiliated 1454 :mode nil :granularity nil :parent #103) #("Now create a folder from which will host the following dockerfile. You\ncan name this file Dockerfile. Note that mariadb is the base image\nsince it already has mariadb installed for us.\n" 0 185 (:parent #111))) (src-block (:language "conf" :switches nil :parameters nil :begin 1640 :end 1847 :number-lines nil :preserve-indent nil :retain-labels t :use-labels t :label-fmt nil :value "FROM mariadb:latest\n\nCOPY ./gn2.tar.gz /tmp/gn2.tar.gz\nRUN tar -xzf /tmp/gn2.tar.gz -C / && rm -f /tmp/gn2.tar.gz && \\\n mkdir -p /usr/local/mysql /genotype_files/genotype/json\n" :post-blank 1 :post-affiliated 1640 :mode nil :granularity nil :parent #103)) (paragraph (:begin 1847 :end 1895 :contents-begin 1847 :contents-end 1894 :post-blank 1 :post-affiliated 1847 :mode nil :granularity nil :parent #103) #("Build the image(Note the fullstop at the end):\n" 0 47 (:parent #113))) (fixed-width (:begin 1895 :end 1955 :value "sudo docker build -t genenetwork2:latest -f Dockerfile ." :post-blank 2 :post-affiliated 1895 :mode nil :granularity nil :parent #103)) (paragraph (:begin 1955 :end 2009 :contents-begin 1955 :contents-end 2008 :post-blank 1 :post-affiliated 1955 :mode nil :granularity nil :parent #103) #("To load the image interactively you've just created:\n" 0 53 (:parent #115))) (fixed-width (:begin 2009 :end 2054 :value "docker run -ti \"genenetwork2:latest\" bash" :post-blank 2 :post-affiliated 2009 :mode nil :granularity nil :parent #103)) (paragraph (:begin 2054 :end 2141 :contents-begin 2054 :contents-end 2140 :post-blank 1 :post-affiliated 2054 :mode nil :granularity nil :parent #103) #("Assuming you have a docker instance running, you could always run\ncommands in it e.g:\n" 0 86 (:parent #117))) (fixed-width (:begin 2141 :end 2193 :value "docker run \"genenetwork2:latest\" python --version" :post-blank 1 :post-affiliated 2141 :mode nil :granularity nil :parent #103)))) (headline (:raw-value "Pushing to DockerHub" :begin 2194 :end 2817 :pre-blank 1 :contents-begin 2218 :contents-end 2817 :robust-begin 2220 :robust-end 2815 :level 1 :priority nil :tags nil :todo-keyword nil :todo-type nil :post-blank 0 :footnote-section-p nil :archivedp nil :commentedp nil :post-affiliated 2194 :title (#("Pushing to DockerHub" 0 20 (:parent #101))) :mode nil :granularity nil :parent #94) (section (:begin 2218 :end 2817 :contents-begin 2218 :contents-end 2817 :robust-begin 2218 :robust-end 2815 :post-blank 0 :post-affiliated 2218 :mode section :granularity nil :parent #101) (paragraph (:begin 2218 :end 2325 :contents-begin 2218 :contents-end 2324 :post-blank 1 :post-affiliated 2218 :mode planning :granularity nil :parent #104) #("We use DockerHub to store the docker images from which we use on our\nCI environment using Github Actions.\n" 0 106 (:parent #107))) (paragraph (:begin 2325 :end 2447 :contents-begin 2325 :contents-end 2446 :post-blank 1 :post-affiliated 2325 :mode nil :granularity nil :parent #104) #("To push to dockerhub, first get the image name by running " 0 58 (:parent #108)) (verbatim (:begin 2383 :end 2398 :post-blank 0 :value "docker\nimages" :parent #108)) #(". Push to dockerhub using a command similar to:\n" 0 48 (:parent #108))) (fixed-width (:begin 2447 :end 2494 :value "docker push bonfacekilz/genenetwork2:latest" :post-blank 2 :post-affiliated 2447 :mode nil :granularity nil :parent #104)) (paragraph (:begin 2494 :end 2537 :contents-begin 2494 :contents-end 2536 :post-blank 1 :post-affiliated 2494 :mode nil :granularity nil :parent #104) #("Right now, we have 2 images on DockerHub:\n" 0 42 (:parent #110))) (plain-list (:type unordered :begin 2537 :end 2817 :contents-begin 2537 :contents-end 2817 :structure ((2537 0 "- " nil nil nil 2701) (2701 0 "- " nil nil nil 2817)) :post-blank 0 :post-affiliated 2537 :mode nil :granularity nil :parent #104) (item (:bullet "- " :begin 2537 :end 2701 :contents-begin 2539 :contents-end 2701 :checkbox nil :counter nil :structure ((2537 0 "- " nil nil nil 2701) (2701 0 "- " nil nil nil 2817)) :pre-blank 0 :post-blank 0 :post-affiliated 2537 :tag nil :mode item :granularity nil :parent #111) (paragraph (:begin 2539 :end 2701 :contents-begin 2539 :contents-end 2701 :post-blank 0 :post-affiliated 2539 :mode nil :granularity nil :parent #114) (link (:type "https" :path "//hub.docker.com/repository/docker/bonfacekilz/python2-genenetwork2" :format plain :raw-link "https://hub.docker.com/repository/docker/bonfacekilz/python2-genenetwork2" :application nil :search-option nil :begin 2539 :end 2612 :contents-begin nil :contents-end nil :post-blank 0 :parent #117)) #(":\n Contains the python2 version of gn2. Don't use this. Please use the\n python3 image!\n" 0 89 (:parent #117)))) (item (:bullet "- " :begin 2701 :end 2817 :contents-begin 2703 :contents-end 2817 :checkbox nil :counter nil :structure ((2537 0 "- " nil nil nil 2701) (2701 0 "- " nil nil nil 2817)) :pre-blank 0 :post-blank 0 :post-affiliated 2701 :tag nil :mode item :granularity nil :parent #111) (paragraph (:begin 2703 :end 2817 :contents-begin 2703 :contents-end 2817 :post-blank 0 :post-affiliated 2703 :mode nil :granularity nil :parent #115) (link (:type "https" :path "//hub.docker.com/repository/docker/bonfacekilz/python3-genenetwork2" :format plain :raw-link "https://hub.docker.com/repository/docker/bonfacekilz/python3-genenetwork2" :application nil :search-option nil :begin 2703 :end 2776 :contents-begin nil :contents-end nil :post-blank 0 :parent #118)) #(":\n Contains the python3 version of gn2.\n" 0 41 (:parent #118))))))))) #24)) #0)) (item (:bullet "- " :begin 113 :end 147 :contents-begin 115 :contents-end 147 :checkbox nil :counter nil :structure ((113 0 "- " nil nil nil 147) (147 0 "- " nil nil nil 209) (209 0 "- " nil nil nil 259)) :pre-blank 0 :post-blank 0 :post-affiliated 113 :tag nil :mode item :granularity nil :parent #0) (paragraph (:begin 115 :end 147 :contents-begin 115 :contents-end 147 :post-blank 0 :post-affiliated 115 :mode nil :granularity nil :parent #3) (link (:type "custom-id" :path "introduction" :format bracket :raw-link "#introduction" :application nil :search-option nil :begin 115 :end 146 :contents-begin 132 :contents-end 144 :post-blank 0 :parent #6) #("Introduction" 0 12 (:parent #9))) #("\n" 0 1 (:parent #6)))) (item (:bullet "- " :begin 147 :end 209 :contents-begin 149 :contents-end 209 :checkbox nil :counter nil :structure ((113 0 "- " nil nil nil 147) (147 0 "- " nil nil nil 209) (209 0 "- " nil nil nil 259)) :pre-blank 0 :post-blank 0 :post-affiliated 147 :tag nil :mode item :granularity nil :parent #0) (paragraph (:begin 149 :end 209 :contents-begin 149 :contents-end 209 :post-blank 0 :post-affiliated 149 :mode nil :granularity nil :parent #4) (link (:type "custom-id" :path "creating-the-docker-images" :format bracket :raw-link "#creating-the-docker-images" :application nil :search-option nil :begin 149 :end 208 :contents-begin 180 :contents-end 206 :post-blank 0 :parent #7) #("Creating the Docker Images" 0 26 (:parent #10))) #("\n" 0 1 (:parent #7)))) (item (:bullet "- " :begin 209 :end 259 :contents-begin 211 :contents-end 259 :checkbox nil :counter nil :structure ((113 0 "- " nil nil nil 147) (147 0 "- " nil nil nil 209) (209 0 "- " nil nil nil 259)) :pre-blank 0 :post-blank 0 :post-affiliated 209 :tag nil :mode item :granularity nil :parent #0) (paragraph (:begin 211 :end 259 :contents-begin 211 :contents-end 259 :post-blank 0 :post-affiliated 211 :mode nil :granularity nil :parent #5) (link (:type "custom-id" :path "pushing-to-dockerhub" :format bracket :raw-link "#pushing-to-dockerhub" :application nil :search-option nil :begin 211 :end 258 :contents-begin 236 :contents-end 256 :post-blank 0 :parent #8) #("Pushing to DockerHub" 0 20 (:parent #11))) #("\n" 0 1 (:parent #8)))))) mapconcat(#f(compiled-function (element) #) ((plain-list (:type unordered :begin 113 :end 259 :contents-begin 113 :contents-end 259 :structure ((113 0 "- " nil nil nil 147) (147 0 "- " nil nil nil 209) (209 0 "- " nil nil nil 259)) :post-blank 0 :post-affiliated 113 :mode planning :granularity nil :parent (section (:begin 113 :end 260 :contents-begin 113 :contents-end 259 :robust-begin 113 :robust-end 257 :post-blank 1 :post-affiliated 113 :mode section :granularity nil :parent (headline (:raw-value "Table of Contents" :begin 35 :end 260 :pre-blank 0 :contents-begin 113 :contents-end 259 :robust-begin 115 :robust-end 257 :level 1 :priority nil :tags ("TOC") :todo-keyword nil :todo-type nil :post-blank 1 :footnote-section-p nil :archivedp nil :commentedp nil :post-affiliated 35 :title (#("Table of Contents" 0 17 (:parent #49))) :mode nil :granularity nil :parent (org-data (:begin 1 :contents-begin 1 :contents-end 2817 :end 2817 :robust-begin 3 :robust-end 2815 :post-blank 0 :post-affiliated 1 :path nil :mode org-data :CATEGORY nil :granularity nil) (section (:begin 1 :end 35 :contents-begin 1 :contents-end 34 :robust-begin 1 :robust-end 32 :post-blank 1 :post-affiliated 1 :mode first-section :granularity nil :parent #95) (keyword (:key "TITLE" :value "Genenetwork2 Dockerized" :begin 1 :end 34 :post-blank 0 :post-affiliated 1 :mode top-comment :granularity nil :parent #98))) #49 (headline (:raw-value "Introduction" :begin 260 :end 926 :pre-blank 1 :contents-begin 276 :contents-end 925 :robust-begin 278 :robust-end 923 :level 1 :priority nil :tags nil :todo-keyword nil :todo-type nil :post-blank 1 :footnote-section-p nil :archivedp nil :commentedp nil :post-affiliated 260 :title (#("Introduction" 0 12 (:parent #100))) :mode nil :granularity nil :parent #95) (section (:begin 276 :end 926 :contents-begin 276 :contents-end 925 :robust-begin 276 :robust-end 923 :post-blank 1 :post-affiliated 276 :mode section :granularity nil :parent #100) (paragraph (:begin 276 :end 600 :contents-begin 276 :contents-end 599 :post-blank 1 :post-affiliated 276 :mode planning :granularity nil :parent #103) #("The CI(Continuous Integration) system for Genenetwork2 uses " 0 60 (:parent #106)) (link (:type "https" :path "//github.com/features/actions" :format bracket :raw-link "https://github.com/features/actions" :application nil :search-option nil :begin 336 :end 391 :contents-begin 375 :contents-end 389 :post-blank 0 :parent #106) #("Github\nActions" 0 14 (:parent #110))) #(". As such, it's important to have a way to run tests using\nfacilities provided by GUIX in a reproducible way. This project\nleverages GUIX to generate a docker container from which the unittests\nare ran from.\n" 0 208 (:parent #106))) (paragraph (:begin 600 :end 830 :contents-begin 600 :contents-end 829 :post-blank 1 :post-affiliated 600 :mode nil :granularity nil :parent #103) #("Find instructions on how to set docker up inside GUIX " 0 54 (:parent #107)) (link (:type "https" :path "//github.com/pjotrp/guix-notes/blob/master/CONTAINERS.org#run-docker" :format bracket :raw-link "https://github.com/pjotrp/guix-notes/blob/master/CONTAINERS.org#run-docker" :application nil :search-option nil :begin 654 :end 738 :contents-begin 732 :contents-end 736 :post-blank 0 :parent #107) #("here" 0 4 (:parent #111))) #(". This\ndocument will not get into that. It's assumed that you have a working\ndocker setup.\n" 0 91 (:parent #107))) (paragraph (:begin 830 :end 925 :contents-begin 830 :contents-end 925 :post-blank 0 :post-affiliated 830 :mode nil :granularity nil :parent #103) #("The rest of this document outlines how the docker container used in\nthe CI builds was created.\n" 0 95 (:parent #108))))) (headline (:raw-value "Creating the Docker Images" :begin 926 :end 2194 :pre-blank 1 :contents-begin 956 :contents-end 2193 :robust-begin 958 :robust-end 2191 :level 1 :priority nil :tags nil :todo-keyword nil :todo-type nil :post-blank 1 :footnote-section-p nil :archivedp nil :commentedp nil :post-affiliated 926 :title (#("Creating the Docker Images" 0 26 (:parent #101))) :mode nil :granularity nil :parent #95) (section (:begin 956 :end 2194 :contents-begin 956 :contents-end 2193 :robust-begin 956 :robust-end 2191 :post-blank 1 :post-affiliated 956 :mode section :granularity nil :parent #101) (paragraph (:begin 956 :end 1071 :contents-begin 956 :contents-end 1070 :post-blank 1 :post-affiliated 956 :mode planning :granularity nil :parent #104) #("The general idea is that GUIX is used to generate a set of binaries,\nwhich will be added to a base mariaDB image.\n" 0 114 (:parent #107))) (paragraph (:begin 1071 :end 1117 :contents-begin 1071 :contents-end 1116 :post-blank 1 :post-affiliated 1071 :mode nil :granularity nil :parent #104) #("First create the gn2 tar archive by running:\n" 0 45 (:parent #108))) (src-block (:language "sh" :switches nil :parameters nil :begin 1117 :end 1343 :number-lines nil :preserve-indent nil :retain-labels t :use-labels t :label-fmt nil :value "env GUIX_PACKAGE_PATH=\"/home/bonface/projects/guix-bioinformatics:/home/bonface/projects/guix-past/modules\" \\\n ./pre-inst-env guix pack --no-grafts\\\n -S /gn2-profile=/ \\\n screen genenetwork2\n" :post-blank 1 :post-affiliated 1117 :mode nil :granularity nil :parent #104)) (paragraph (:begin 1343 :end 1387 :contents-begin 1343 :contents-end 1386 :post-blank 1 :post-affiliated 1343 :mode nil :granularity nil :parent #104) #("The output will look something similar to:\n" 0 43 (:parent #110))) (fixed-width (:begin 1387 :end 1454 :value "/gnu/store/x3m77vwaqcwba24p5s4lrb7w2ii16lj9-tarball-pack.tar.gz" :post-blank 2 :post-affiliated 1387 :mode nil :granularity nil :parent #104)) (paragraph (:begin 1454 :end 1640 :contents-begin 1454 :contents-end 1639 :post-blank 1 :post-affiliated 1454 :mode nil :granularity nil :parent #104) #("Now create a folder from which will host the following dockerfile. You\ncan name this file Dockerfile. Note that mariadb is the base image\nsince it already has mariadb installed for us.\n" 0 185 (:parent #112))) (src-block (:language "conf" :switches nil :parameters nil :begin 1640 :end 1847 :number-lines nil :preserve-indent nil :retain-labels t :use-labels t :label-fmt nil :value "FROM mariadb:latest\n\nCOPY ./gn2.tar.gz /tmp/gn2.tar.gz\nRUN tar -xzf /tmp/gn2.tar.gz -C / && rm -f /tmp/gn2.tar.gz && \\\n mkdir -p /usr/local/mysql /genotype_files/genotype/json\n" :post-blank 1 :post-affiliated 1640 :mode nil :granularity nil :parent #104)) (paragraph (:begin 1847 :end 1895 :contents-begin 1847 :contents-end 1894 :post-blank 1 :post-affiliated 1847 :mode nil :granularity nil :parent #104) #("Build the image(Note the fullstop at the end):\n" 0 47 (:parent #114))) (fixed-width (:begin 1895 :end 1955 :value "sudo docker build -t genenetwork2:latest -f Dockerfile ." :post-blank 2 :post-affiliated 1895 :mode nil :granularity nil :parent #104)) (paragraph (:begin 1955 :end 2009 :contents-begin 1955 :contents-end 2008 :post-blank 1 :post-affiliated 1955 :mode nil :granularity nil :parent #104) #("To load the image interactively you've just created:\n" 0 53 (:parent #116))) (fixed-width (:begin 2009 :end 2054 :value "docker run -ti \"genenetwork2:latest\" bash" :post-blank 2 :post-affiliated 2009 :mode nil :granularity nil :parent #104)) (paragraph (:begin 2054 :end 2141 :contents-begin 2054 :contents-end 2140 :post-blank 1 :post-affiliated 2054 :mode nil :granularity nil :parent #104) #("Assuming you have a docker instance running, you could always run\ncommands in it e.g:\n" 0 86 (:parent #118))) (fixed-width (:begin 2141 :end 2193 :value "docker run \"genenetwork2:latest\" python --version" :post-blank 1 :post-affiliated 2141 :mode nil :granularity nil :parent #104)))) (headline (:raw-value "Pushing to DockerHub" :begin 2194 :end 2817 :pre-blank 1 :contents-begin 2218 :contents-end 2817 :robust-begin 2220 :robust-end 2815 :level 1 :priority nil :tags nil :todo-keyword nil :todo-type nil :post-blank 0 :footnote-section-p nil :archivedp nil :commentedp nil :post-affiliated 2194 :title (#("Pushing to DockerHub" 0 20 (:parent #102))) :mode nil :granularity nil :parent #95) (section (:begin 2218 :end 2817 :contents-begin 2218 :contents-end 2817 :robust-begin 2218 :robust-end 2815 :post-blank 0 :post-affiliated 2218 :mode section :granularity nil :parent #102) (paragraph (:begin 2218 :end 2325 :contents-begin 2218 :contents-end 2324 :post-blank 1 :post-affiliated 2218 :mode planning :granularity nil :parent #105) #("We use DockerHub to store the docker images from which we use on our\nCI environment using Github Actions.\n" 0 106 (:parent #108))) (paragraph (:begin 2325 :end 2447 :contents-begin 2325 :contents-end 2446 :post-blank 1 :post-affiliated 2325 :mode nil :granularity nil :parent #105) #("To push to dockerhub, first get the image name by running " 0 58 (:parent #109)) (verbatim (:begin 2383 :end 2398 :post-blank 0 :value "docker\nimages" :parent #109)) #(". Push to dockerhub using a command similar to:\n" 0 48 (:parent #109))) (fixed-width (:begin 2447 :end 2494 :value "docker push bonfacekilz/genenetwork2:latest" :post-blank 2 :post-affiliated 2447 :mode nil :granularity nil :parent #105)) (paragraph (:begin 2494 :end 2537 :contents-begin 2494 :contents-end 2536 :post-blank 1 :post-affiliated 2494 :mode nil :granularity nil :parent #105) #("Right now, we have 2 images on DockerHub:\n" 0 42 (:parent #111))) (plain-list (:type unordered :begin 2537 :end 2817 :contents-begin 2537 :contents-end 2817 :structure ((2537 0 "- " nil nil nil 2701) (2701 0 "- " nil nil nil 2817)) :post-blank 0 :post-affiliated 2537 :mode nil :granularity nil :parent #105) (item (:bullet "- " :begin 2537 :end 2701 :contents-begin 2539 :contents-end 2701 :checkbox nil :counter nil :structure ((2537 0 "- " nil nil nil 2701) (2701 0 "- " nil nil nil 2817)) :pre-blank 0 :post-blank 0 :post-affiliated 2537 :tag nil :mode item :granularity nil :parent #112) (paragraph (:begin 2539 :end 2701 :contents-begin 2539 :contents-end 2701 :post-blank 0 :post-affiliated 2539 :mode nil :granularity nil :parent #115) (link (:type "https" :path "//hub.docker.com/repository/docker/bonfacekilz/python2-genenetwork2" :format plain :raw-link "https://hub.docker.com/repository/docker/bonfacekilz/python2-genenetwork2" :application nil :search-option nil :begin 2539 :end 2612 :contents-begin nil :contents-end nil :post-blank 0 :parent #118)) #(":\n Contains the python2 version of gn2. Don't use this. Please use the\n python3 image!\n" 0 89 (:parent #118)))) (item (:bullet "- " :begin 2701 :end 2817 :contents-begin 2703 :contents-end 2817 :checkbox nil :counter nil :structure ((2537 0 "- " nil nil nil 2701) (2701 0 "- " nil nil nil 2817)) :pre-blank 0 :post-blank 0 :post-affiliated 2701 :tag nil :mode item :granularity nil :parent #112) (paragraph (:begin 2703 :end 2817 :contents-begin 2703 :contents-end 2817 :post-blank 0 :post-affiliated 2703 :mode nil :granularity nil :parent #116) (link (:type "https" :path "//hub.docker.com/repository/docker/bonfacekilz/python3-genenetwork2" :format plain :raw-link "https://hub.docker.com/repository/docker/bonfacekilz/python3-genenetwork2" :application nil :search-option nil :begin 2703 :end 2776 :contents-begin nil :contents-end nil :post-blank 0 :parent #119)) #(":\n Contains the python3 version of gn2.\n" 0 41 (:parent #119))))))))) #25)) . #0)) (item (:bullet "- " :begin 113 :end 147 :contents-begin 115 :contents-end 147 :checkbox nil :counter nil :structure ((113 0 "- " nil nil nil 147) (147 0 "- " nil nil nil 209) (209 0 "- " nil nil nil 259)) :pre-blank 0 :post-blank 0 :post-affiliated 113 :tag nil :mode item :granularity nil :parent #1) (paragraph (:begin 115 :end 147 :contents-begin 115 :contents-end 147 :post-blank 0 :post-affiliated 115 :mode nil :granularity nil :parent #4) (link (:type "custom-id" :path "introduction" :format bracket :raw-link "#introduction" :application nil :search-option nil :begin 115 :end 146 :contents-begin 132 :contents-end 144 :post-blank 0 :parent #7) #("Introduction" 0 12 (:parent #10))) #("\n" 0 1 (:parent #7)))) (item (:bullet "- " :begin 147 :end 209 :contents-begin 149 :contents-end 209 :checkbox nil :counter nil :structure ((113 0 "- " nil nil nil 147) (147 0 "- " nil nil nil 209) (209 0 "- " nil nil nil 259)) :pre-blank 0 :post-blank 0 :post-affiliated 147 :tag nil :mode item :granularity nil :parent #1) (paragraph (:begin 149 :end 209 :contents-begin 149 :contents-end 209 :post-blank 0 :post-affiliated 149 :mode nil :granularity nil :parent #5) (link (:type "custom-id" :path "creating-the-docker-images" :format bracket :raw-link "#creating-the-docker-images" :application nil :search-option nil :begin 149 :end 208 :contents-begin 180 :contents-end 206 :post-blank 0 :parent #8) #("Creating the Docker Images" 0 26 (:parent #11))) #("\n" 0 1 (:parent #8)))) (item (:bullet "- " :begin 209 :end 259 :contents-begin 211 :contents-end 259 :checkbox nil :counter nil :structure ((113 0 "- " nil nil nil 147) (147 0 "- " nil nil nil 209) (209 0 "- " nil nil nil 259)) :pre-blank 0 :post-blank 0 :post-affiliated 209 :tag nil :mode item :granularity nil :parent #1) (paragraph (:begin 211 :end 259 :contents-begin 211 :contents-end 259 :post-blank 0 :post-affiliated 211 :mode nil :granularity nil :parent #6) (link (:type "custom-id" :path "pushing-to-dockerhub" :format bracket :raw-link "#pushing-to-dockerhub" :application nil :search-option nil :begin 211 :end 258 :contents-begin 236 :contents-end 256 :post-blank 0 :parent #9) #("Pushing to DockerHub" 0 20 (:parent #12))) #("\n" 0 1 (:parent #9)))))) "") org-export-data((section (:begin 113 :end 260 :contents-begin 113 :contents-end 259 :robust-begin 113 :robust-end 257 :post-blank 1 :post-affiliated 113 :mode section :granularity nil :parent (headline (:raw-value "Table of Contents" :begin 35 :end 260 :pre-blank 0 :contents-begin 113 :contents-end 259 :robust-begin 115 :robust-end 257 :level 1 :priority nil :tags ("TOC") :todo-keyword nil :todo-type nil :post-blank 1 :footnote-section-p nil :archivedp nil :commentedp nil :post-affiliated 35 :title (#("Table of Contents" 0 17 (:parent #24))) :mode nil :granularity nil :parent (org-data (:begin 1 :contents-begin 1 :contents-end 2817 :end 2817 :robust-begin 3 :robust-end 2815 :post-blank 0 :post-affiliated 1 :path nil :mode org-data :CATEGORY nil :granularity nil) (section (:begin 1 :end 35 :contents-begin 1 :contents-end 34 :robust-begin 1 :robust-end 32 :post-blank 1 :post-affiliated 1 :mode first-section :granularity nil :parent #70) (keyword (:key "TITLE" :value "Genenetwork2 Dockerized" :begin 1 :end 34 :post-blank 0 :post-affiliated 1 :mode top-comment :granularity nil :parent #73))) #24 (headline (:raw-value "Introduction" :begin 260 :end 926 :pre-blank 1 :contents-begin 276 :contents-end 925 :robust-begin 278 :robust-end 923 :level 1 :priority nil :tags nil :todo-keyword nil :todo-type nil :post-blank 1 :footnote-section-p nil :archivedp nil :commentedp nil :post-affiliated 260 :title (#("Introduction" 0 12 (:parent #75))) :mode nil :granularity nil :parent #70) (section (:begin 276 :end 926 :contents-begin 276 :contents-end 925 :robust-begin 276 :robust-end 923 :post-blank 1 :post-affiliated 276 :mode section :granularity nil :parent #75) (paragraph (:begin 276 :end 600 :contents-begin 276 :contents-end 599 :post-blank 1 :post-affiliated 276 :mode planning :granularity nil :parent #78) #("The CI(Continuous Integration) system for Genenetwork2 uses " 0 60 (:parent #81)) (link (:type "https" :path "//github.com/features/actions" :format bracket :raw-link "https://github.com/features/actions" :application nil :search-option nil :begin 336 :end 391 :contents-begin 375 :contents-end 389 :post-blank 0 :parent #81) #("Github\nActions" 0 14 (:parent #85))) #(". As such, it's important to have a way to run tests using\nfacilities provided by GUIX in a reproducible way. This project\nleverages GUIX to generate a docker container from which the unittests\nare ran from.\n" 0 208 (:parent #81))) (paragraph (:begin 600 :end 830 :contents-begin 600 :contents-end 829 :post-blank 1 :post-affiliated 600 :mode nil :granularity nil :parent #78) #("Find instructions on how to set docker up inside GUIX " 0 54 (:parent #82)) (link (:type "https" :path "//github.com/pjotrp/guix-notes/blob/master/CONTAINERS.org#run-docker" :format bracket :raw-link "https://github.com/pjotrp/guix-notes/blob/master/CONTAINERS.org#run-docker" :application nil :search-option nil :begin 654 :end 738 :contents-begin 732 :contents-end 736 :post-blank 0 :parent #82) #("here" 0 4 (:parent #86))) #(". This\ndocument will not get into that. It's assumed that you have a working\ndocker setup.\n" 0 91 (:parent #82))) (paragraph (:begin 830 :end 925 :contents-begin 830 :contents-end 925 :post-blank 0 :post-affiliated 830 :mode nil :granularity nil :parent #78) #("The rest of this document outlines how the docker container used in\nthe CI builds was created.\n" 0 95 (:parent #83))))) (headline (:raw-value "Creating the Docker Images" :begin 926 :end 2194 :pre-blank 1 :contents-begin 956 :contents-end 2193 :robust-begin 958 :robust-end 2191 :level 1 :priority nil :tags nil :todo-keyword nil :todo-type nil :post-blank 1 :footnote-section-p nil :archivedp nil :commentedp nil :post-affiliated 926 :title (#("Creating the Docker Images" 0 26 (:parent #76))) :mode nil :granularity nil :parent #70) (section (:begin 956 :end 2194 :contents-begin 956 :contents-end 2193 :robust-begin 956 :robust-end 2191 :post-blank 1 :post-affiliated 956 :mode section :granularity nil :parent #76) (paragraph (:begin 956 :end 1071 :contents-begin 956 :contents-end 1070 :post-blank 1 :post-affiliated 956 :mode planning :granularity nil :parent #79) #("The general idea is that GUIX is used to generate a set of binaries,\nwhich will be added to a base mariaDB image.\n" 0 114 (:parent #82))) (paragraph (:begin 1071 :end 1117 :contents-begin 1071 :contents-end 1116 :post-blank 1 :post-affiliated 1071 :mode nil :granularity nil :parent #79) #("First create the gn2 tar archive by running:\n" 0 45 (:parent #83))) (src-block (:language "sh" :switches nil :parameters nil :begin 1117 :end 1343 :number-lines nil :preserve-indent nil :retain-labels t :use-labels t :label-fmt nil :value "env GUIX_PACKAGE_PATH=\"/home/bonface/projects/guix-bioinformatics:/home/bonface/projects/guix-past/modules\" \\\n ./pre-inst-env guix pack --no-grafts\\\n -S /gn2-profile=/ \\\n screen genenetwork2\n" :post-blank 1 :post-affiliated 1117 :mode nil :granularity nil :parent #79)) (paragraph (:begin 1343 :end 1387 :contents-begin 1343 :contents-end 1386 :post-blank 1 :post-affiliated 1343 :mode nil :granularity nil :parent #79) #("The output will look something similar to:\n" 0 43 (:parent #85))) (fixed-width (:begin 1387 :end 1454 :value "/gnu/store/x3m77vwaqcwba24p5s4lrb7w2ii16lj9-tarball-pack.tar.gz" :post-blank 2 :post-affiliated 1387 :mode nil :granularity nil :parent #79)) (paragraph (:begin 1454 :end 1640 :contents-begin 1454 :contents-end 1639 :post-blank 1 :post-affiliated 1454 :mode nil :granularity nil :parent #79) #("Now create a folder from which will host the following dockerfile. You\ncan name this file Dockerfile. Note that mariadb is the base image\nsince it already has mariadb installed for us.\n" 0 185 (:parent #87))) (src-block (:language "conf" :switches nil :parameters nil :begin 1640 :end 1847 :number-lines nil :preserve-indent nil :retain-labels t :use-labels t :label-fmt nil :value "FROM mariadb:latest\n\nCOPY ./gn2.tar.gz /tmp/gn2.tar.gz\nRUN tar -xzf /tmp/gn2.tar.gz -C / && rm -f /tmp/gn2.tar.gz && \\\n mkdir -p /usr/local/mysql /genotype_files/genotype/json\n" :post-blank 1 :post-affiliated 1640 :mode nil :granularity nil :parent #79)) (paragraph (:begin 1847 :end 1895 :contents-begin 1847 :contents-end 1894 :post-blank 1 :post-affiliated 1847 :mode nil :granularity nil :parent #79) #("Build the image(Note the fullstop at the end):\n" 0 47 (:parent #89))) (fixed-width (:begin 1895 :end 1955 :value "sudo docker build -t genenetwork2:latest -f Dockerfile ." :post-blank 2 :post-affiliated 1895 :mode nil :granularity nil :parent #79)) (paragraph (:begin 1955 :end 2009 :contents-begin 1955 :contents-end 2008 :post-blank 1 :post-affiliated 1955 :mode nil :granularity nil :parent #79) #("To load the image interactively you've just created:\n" 0 53 (:parent #91))) (fixed-width (:begin 2009 :end 2054 :value "docker run -ti \"genenetwork2:latest\" bash" :post-blank 2 :post-affiliated 2009 :mode nil :granularity nil :parent #79)) (paragraph (:begin 2054 :end 2141 :contents-begin 2054 :contents-end 2140 :post-blank 1 :post-affiliated 2054 :mode nil :granularity nil :parent #79) #("Assuming you have a docker instance running, you could always run\ncommands in it e.g:\n" 0 86 (:parent #93))) (fixed-width (:begin 2141 :end 2193 :value "docker run \"genenetwork2:latest\" python --version" :post-blank 1 :post-affiliated 2141 :mode nil :granularity nil :parent #79)))) (headline (:raw-value "Pushing to DockerHub" :begin 2194 :end 2817 :pre-blank 1 :contents-begin 2218 :contents-end 2817 :robust-begin 2220 :robust-end 2815 :level 1 :priority nil :tags nil :todo-keyword nil :todo-type nil :post-blank 0 :footnote-section-p nil :archivedp nil :commentedp nil :post-affiliated 2194 :title (#("Pushing to DockerHub" 0 20 (:parent #77))) :mode nil :granularity nil :parent #70) (section (:begin 2218 :end 2817 :contents-begin 2218 :contents-end 2817 :robust-begin 2218 :robust-end 2815 :post-blank 0 :post-affiliated 2218 :mode section :granularity nil :parent #77) (paragraph (:begin 2218 :end 2325 :contents-begin 2218 :contents-end 2324 :post-blank 1 :post-affiliated 2218 :mode planning :granularity nil :parent #80) #("We use DockerHub to store the docker images from which we use on our\nCI environment using Github Actions.\n" 0 106 (:parent #83))) (paragraph (:begin 2325 :end 2447 :contents-begin 2325 :contents-end 2446 :post-blank 1 :post-affiliated 2325 :mode nil :granularity nil :parent #80) #("To push to dockerhub, first get the image name by running " 0 58 (:parent #84)) (verbatim (:begin 2383 :end 2398 :post-blank 0 :value "docker\nimages" :parent #84)) #(". Push to dockerhub using a command similar to:\n" 0 48 (:parent #84))) (fixed-width (:begin 2447 :end 2494 :value "docker push bonfacekilz/genenetwork2:latest" :post-blank 2 :post-affiliated 2447 :mode nil :granularity nil :parent #80)) (paragraph (:begin 2494 :end 2537 :contents-begin 2494 :contents-end 2536 :post-blank 1 :post-affiliated 2494 :mode nil :granularity nil :parent #80) #("Right now, we have 2 images on DockerHub:\n" 0 42 (:parent #86))) (plain-list (:type unordered :begin 2537 :end 2817 :contents-begin 2537 :contents-end 2817 :structure ((2537 0 "- " nil nil nil 2701) (2701 0 "- " nil nil nil 2817)) :post-blank 0 :post-affiliated 2537 :mode nil :granularity nil :parent #80) (item (:bullet "- " :begin 2537 :end 2701 :contents-begin 2539 :contents-end 2701 :checkbox nil :counter nil :structure ((2537 0 "- " nil nil nil 2701) (2701 0 "- " nil nil nil 2817)) :pre-blank 0 :post-blank 0 :post-affiliated 2537 :tag nil :mode item :granularity nil :parent #87) (paragraph (:begin 2539 :end 2701 :contents-begin 2539 :contents-end 2701 :post-blank 0 :post-affiliated 2539 :mode nil :granularity nil :parent #90) (link (:type "https" :path "//hub.docker.com/repository/docker/bonfacekilz/python2-genenetwork2" :format plain :raw-link "https://hub.docker.com/repository/docker/bonfacekilz/python2-genenetwork2" :application nil :search-option nil :begin 2539 :end 2612 :contents-begin nil :contents-end nil :post-blank 0 :parent #93)) #(":\n Contains the python2 version of gn2. Don't use this. Please use the\n python3 image!\n" 0 89 (:parent #93)))) (item (:bullet "- " :begin 2701 :end 2817 :contents-begin 2703 :contents-end 2817 :checkbox nil :counter nil :structure ((2537 0 "- " nil nil nil 2701) (2701 0 "- " nil nil nil 2817)) :pre-blank 0 :post-blank 0 :post-affiliated 2701 :tag nil :mode item :granularity nil :parent #87) (paragraph (:begin 2703 :end 2817 :contents-begin 2703 :contents-end 2817 :post-blank 0 :post-affiliated 2703 :mode nil :granularity nil :parent #91) (link (:type "https" :path "//hub.docker.com/repository/docker/bonfacekilz/python3-genenetwork2" :format plain :raw-link "https://hub.docker.com/repository/docker/bonfacekilz/python3-genenetwork2" :application nil :search-option nil :begin 2703 :end 2776 :contents-begin nil :contents-end nil :post-blank 0 :parent #94)) #(":\n Contains the python3 version of gn2.\n" 0 41 (:parent #94))))))))) #0)) (plain-list (:type unordered :begin 113 :end 259 :contents-begin 113 :contents-end 259 :structure ((113 0 "- " nil nil nil 147) (147 0 "- " nil nil nil 209) (209 0 "- " nil nil nil 259)) :post-blank 0 :post-affiliated 113 :mode planning :granularity nil :parent #0) (item (:bullet "- " :begin 113 :end 147 :contents-begin 115 :contents-end 147 :checkbox nil :counter nil :structure ((113 0 "- " nil nil nil 147) (147 0 "- " nil nil nil 209) (209 0 "- " nil nil nil 259)) :pre-blank 0 :post-blank 0 :post-affiliated 113 :tag nil :mode item :granularity nil :parent #3) (paragraph (:begin 115 :end 147 :contents-begin 115 :contents-end 147 :post-blank 0 :post-affiliated 115 :mode nil :granularity nil :parent #6) (link (:type "custom-id" :path "introduction" :format bracket :raw-link "#introduction" :application nil :search-option nil :begin 115 :end 146 :contents-begin 132 :contents-end 144 :post-blank 0 :parent #9) #("Introduction" 0 12 (:parent #12))) #("\n" 0 1 (:parent #9)))) (item (:bullet "- " :begin 147 :end 209 :contents-begin 149 :contents-end 209 :checkbox nil :counter nil :structure ((113 0 "- " nil nil nil 147) (147 0 "- " nil nil nil 209) (209 0 "- " nil nil nil 259)) :pre-blank 0 :post-blank 0 :post-affiliated 147 :tag nil :mode item :granularity nil :parent #3) (paragraph (:begin 149 :end 209 :contents-begin 149 :contents-end 209 :post-blank 0 :post-affiliated 149 :mode nil :granularity nil :parent #7) (link (:type "custom-id" :path "creating-the-docker-images" :format bracket :raw-link "#creating-the-docker-images" :application nil :search-option nil :begin 149 :end 208 :contents-begin 180 :contents-end 206 :post-blank 0 :parent #10) #("Creating the Docker Images" 0 26 (:parent #13))) #("\n" 0 1 (:parent #10)))) (item (:bullet "- " :begin 209 :end 259 :contents-begin 211 :contents-end 259 :checkbox nil :counter nil :structure ((113 0 "- " nil nil nil 147) (147 0 "- " nil nil nil 209) (209 0 "- " nil nil nil 259)) :pre-blank 0 :post-blank 0 :post-affiliated 209 :tag nil :mode item :granularity nil :parent #3) (paragraph (:begin 211 :end 259 :contents-begin 211 :contents-end 259 :post-blank 0 :post-affiliated 211 :mode nil :granularity nil :parent #8) (link (:type "custom-id" :path "pushing-to-dockerhub" :format bracket :raw-link "#pushing-to-dockerhub" :application nil :search-option nil :begin 211 :end 258 :contents-begin 236 :contents-end 256 :post-blank 0 :parent #11) #("Pushing to DockerHub" 0 20 (:parent #14))) #("\n" 0 1 (:parent #11)))))) (:export-options (body-only) :back-end #s(org-export-backend :name html :parent nil :transcoders ((bold . org-html-bold) (center-block . org-html-center-block) (clock . org-html-clock) (code . org-html-code) (drawer . org-html-drawer) (dynamic-block . org-html-dynamic-block) (entity . org-html-entity) (example-block . org-html-example-block) (export-block . org-html-export-block) (export-snippet . org-html-export-snippet) (fixed-width . org-html-fixed-width) (footnote-reference . org-html-footnote-reference) (headline . org-html-headline) (horizontal-rule . org-html-horizontal-rule) (inline-src-block . org-html-inline-src-block) (inlinetask . org-html-inlinetask) (inner-template . org-html-inner-template) (italic . org-html-italic) (item . org-html-item) (keyword . org-html-keyword) (latex-environment . org-html-latex-environment) (latex-fragment . org-html-latex-fragment) (line-break . org-html-line-break) (link . org-html-link) (node-property . org-html-node-property) (paragraph . org-html-paragraph) (plain-list . org-html-plain-list) (plain-text . org-html-plain-text) (planning . org-html-planning) (property-drawer . org-html-property-drawer) (quote-block . org-html-quote-block) (radio-target . org-html-radio-target) (section . org-html-section) (special-block . org-html-special-block) (src-block . org-html-src-block) (statistics-cookie . org-html-statistics-cookie) (strike-through . org-html-strike-through) (subscript . org-html-subscript) (superscript . org-html-superscript) (table . org-html-table) (table-cell . org-html-table-cell) (table-row . org-html-table-row) (target . org-html-target) (template . org-html-template) (timestamp . org-html-timestamp) (underline . org-html-underline) (verbatim . org-html-verbatim) (verse-block . org-html-verse-block)) :options ((:html-doctype "HTML_DOCTYPE" nil org-html-doctype) (:html-container "HTML_CONTAINER" nil org-html-container-element) (:html-content-class "HTML_CONTENT_CLASS" nil org-html-content-class) (:description "DESCRIPTION" nil nil newline) (:keywords "KEYWORDS" nil nil space) (:html-html5-fancy nil "html5-fancy" org-html-html5-fancy) (:html-link-use-abs-url nil "html-link-use-abs-url" org-html-link-use-abs-url) (:html-link-home "HTML_LINK_HOME" nil org-html-link-home) (:html-link-up "HTML_LINK_UP" nil org-html-link-up) (:html-mathjax "HTML_MATHJAX" nil "" space) (:html-equation-reference-format "HTML_EQUATION_REFERENCE_FORMAT" nil org-html-equation-reference-format t) (:html-postamble nil "html-postamble" org-html-postamble) (:html-preamble nil "html-preamble" org-html-preamble) (:html-head "HTML_HEAD" nil org-html-head newline) (:html-head-extra "HTML_HEAD_EXTRA" nil org-html-head-extra newline) (:subtitle "SUBTITLE" nil nil parse) (:html-head-include-default-style nil "html-style" org-html-head-include-default-style) (:html-head-include-scripts nil "html-scripts" org-html-head-include-scripts) (:html-allow-name-attribute-in-anchors nil nil org-html-allow-name-attribute-in-anchors) (:html-divs nil nil org-html-divs) (:html-checkbox-type nil nil org-html-checkbox-type) (:html-extension nil nil org-html-extension) (:html-footnote-format nil nil org-html-footnote-format) (:html-footnote-separator nil nil org-html-footnote-separator) (:html-footnotes-section nil nil org-html-footnotes-section) (:html-format-drawer-function nil nil org-html-format-drawer-function) (:html-format-headline-function nil nil org-html-format-headline-function) (:html-format-inlinetask-function nil nil org-html-format-inlinetask-function) (:html-home/up-format nil nil org-html-home/up-format) (:html-indent nil nil org-html-indent) (:html-infojs-options nil nil org-html-infojs-options) (:html-infojs-template nil nil org-html-infojs-template) (:html-inline-image-rules nil nil org-html-inline-image-rules) (:html-link-org-files-as-html nil nil org-html-link-org-files-as-html) (:html-mathjax-options nil nil org-html-mathjax-options) (:html-mathjax-template nil nil org-html-mathjax-template) (:html-metadata-timestamp-format nil nil org-html-metadata-timestamp-format) (:html-postamble-format nil nil org-html-postamble-format) (:html-preamble-format nil nil org-html-preamble-format) (:html-prefer-user-labels nil nil org-html-prefer-user-labels) (:html-self-link-headlines nil nil org-html-self-link-headlines) (:html-table-align-individual-fields nil nil org-html-table-align-individual-fields) (:html-table-caption-above nil nil org-html-table-caption-above) (:html-table-data-tags nil nil org-html-table-data-tags) (:html-table-header-tags nil nil org-html-table-header-tags) (:html-table-use-header-tags-for-first-column nil nil org-html-table-use-header-tags-for-first-column) (:html-tag-class-prefix nil nil org-html-tag-class-prefix) (:html-text-markup-alist nil nil org-html-text-markup-alist) (:html-todo-kwd-class-prefix nil nil org-html-todo-kwd-class-prefix) (:html-toplevel-hlevel nil nil org-html-toplevel-hlevel) (:html-use-infojs nil nil org-html-use-infojs) (:html-validation-link nil nil org-html-validation-link) (:html-viewport nil nil org-html-viewport) (:html-inline-images nil nil org-html-inline-images) (:html-table-attributes nil nil org-html-table-default-attributes) (:html-table-row-open-tag nil nil org-html-table-row-open-tag) (:html-table-row-close-tag nil nil org-html-table-row-close-tag) (:html-xml-declaration nil nil org-html-xml-declaration) (:html-wrap-src-lines nil nil org-html-wrap-src-lines) (:html-klipsify-src nil nil org-html-klipsify-src) (:html-klipse-css nil nil org-html-klipse-css) (:html-klipse-js nil nil org-html-klipse-js) (:html-klipse-selection-script nil nil org-html-klipse-selection-script) (:infojs-opt "INFOJS_OPT" nil nil) (:creator "CREATOR" nil org-html-creator-string) (:with-latex nil "tex" org-html-with-latex) (:latex-header "LATEX_HEADER" nil nil newline)) :filters ((:filter-options . org-html-infojs-install-script) (:filter-parse-tree . org-html-image-link-filter) (:filter-final-output . org-html-final-function)) :blocks nil :menu (104 "Export to HTML" ((72 "As HTML buffer" org-html-export-as-html) (104 "As HTML file" org-html-export-to-html) (111 "As HTML file and open" (lambda (a s v b) (if a (org-html-export-to-html t s v b) (org-open-file (org-html-export-to-html nil s v b)))))))) :translate-alist ((bold . org-html-bold) (center-block . org-html-center-block) (clock . org-html-clock) (code . org-html-code) (drawer . org-html-drawer) (dynamic-block . org-html-dynamic-block) (entity . org-html-entity) (example-block . org-html-example-block) (export-block . org-html-export-block) (export-snippet . org-html-export-snippet) (fixed-width . org-html-fixed-width) (footnote-reference . org-html-footnote-reference) (headline . org-html-headline) (horizontal-rule . org-html-horizontal-rule) (inline-src-block . org-html-inline-src-block) (inlinetask . org-html-inlinetask) (inner-template . org-html-inner-template) (italic . org-html-italic) (item . org-html-item) (keyword . org-html-keyword) (latex-environment . org-html-latex-environment) (latex-fragment . org-html-latex-fragment) (line-break . org-html-line-break) (link . org-html-link) (node-property . org-html-node-property) (paragraph . org-html-paragraph) (plain-list . org-html-plain-list) (plain-text . org-html-plain-text) (planning . org-html-planning) (property-drawer . org-html-property-drawer) (quote-block . org-html-quote-block) (radio-target . org-html-radio-target) (section . org-html-section) (special-block . org-html-special-block) (src-block . org-html-src-block) (statistics-cookie . org-html-statistics-cookie) (strike-through . org-html-strike-through) (subscript . org-html-subscript) (superscript . org-html-superscript) (table . org-html-table) (table-cell . org-html-table-cell) (table-row . org-html-table-row) (target . org-html-target) (template . org-html-template) (timestamp . org-html-timestamp) (underline . org-html-underline) (verbatim . org-html-verbatim) (verse-block . org-html-verse-block)) :exported-data # :input-buffer " *temp*" :input-file nil :html-doctype "xhtml-strict" :html-container "div" :html-content-class "content" :description nil :keywords nil :html-html5-fancy nil :html-link-use-abs-url nil :html-link-home "" :html-link-up "" :html-mathjax "" :html-equation-reference-format "\\eqref{%s}" :html-postamble auto :html-preamble t :html-head "" :html-head-extra "" :subtitle nil :html-head-include-default-style t :html-head-include-scripts nil :html-allow-name-attribute-in-anchors nil :html-divs ((preamble "div" "preamble") (content "div" "content") (postamble "div" "postamble")) :html-checkbox-type ascii :html-extension "html" :html-footnote-format "%s" :html-footnote-separator ", " :html-footnotes-section "
\n

%s:

\n
\n%s\n
\n
" :html-format-drawer-function #f(compiled-function (name contents) #) :html-format-headline-function org-html-format-headline-default-function :html-format-inlinetask-function org-html-format-inlinetask-default-function :html-home/up-format "
\n UP \n |\n HOME \n
" :html-indent nil :html-infojs-options ((path . "https://orgmode.org/org-info.js") (view . "info") (toc . :with-toc) (ftoc . "0") (tdepth . "max") (sdepth . "max") (mouse . "underline") (buttons . "0") (ltoc . "1") (up . :html-link-up) (home . :html-link-home)) :html-infojs-template "\n\n" :html-inline-image-rules (("file" . "\\(?:\\.\\(?:gif\\|jp\\(?:e?g\\)\\|png\\|svg\\|webp\\)\\)") ("http" . "\\(?:\\.\\(?:gif\\|jp\\(?:e?g\\)\\|png\\|svg\\|webp\\)\\)") ("https" . "\\(?:\\.\\(?:gif\\|jp\\(?:e?g\\)\\|png\\|svg\\|webp\\)\\)")) :html-link-org-files-as-html t :html-mathjax-options ((path "https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-mml-chtml.js") (scale 1.0) (align "center") (font "mathjax-modern") (overflow "overflow") (tags "ams") (indent "0em") (multlinewidth "85%") (tagindent ".8em") (tagside "right")) :html-mathjax-template "\n\n\n" :html-metadata-timestamp-format "%Y-%m-%d %a %H:%M" :html-postamble-format (("en" "

Author: %a (%e)

\n

Date: %d

\n

%c

\n

%v

")) :html-preamble-format (("en" "")) :html-prefer-user-labels nil :html-self-link-headlines nil :html-table-align-individual-fields t :html-table-caption-above t :html-table-data-tags ("" . "") :html-table-header-tags ("" . "") :html-table-use-header-tags-for-first-column nil :html-tag-class-prefix "" :html-text-markup-alist ((bold . "%s") (code . "%s") (italic . "%s") (strike-through . "%s") (underline . "%s") (verbatim . "%s")) :html-todo-kwd-class-prefix "" :html-toplevel-hlevel 2 :html-use-infojs when-configured :html-validation-link "Validate" :html-viewport ((width "device-width") (initial-scale "1") (minimum-scale "") (maximum-scale "") (user-scalable "")) :html-inline-images t :html-table-attributes (:border "2" :cellspacing "0" :cellpadding "6" :rules "groups" :frame "hsides") :html-table-row-open-tag "" :html-table-row-close-tag "" :html-xml-declaration (("html" . "") ("php" . "\"; ?>")) :html-wrap-src-lines nil :html-klipsify-src nil :html-klipse-css "https://storage.googleapis.com/app.klipse.tech/css/codemirror.css" :html-klipse-js "https://storage.googleapis.com/app.klipse.tech/plugin_prod/js/klipse_plugin.min.js" :html-klipse-selection-script "window.klipse_settings = {selector_eval_html: '.src-html',\n selector_eval_js: '.src-js',\n selector_eval_python_client: '.src-python',\n selector_eval_scheme: '.src-scheme',\n selector: '.src-clojure',\n selector_eval_ruby: '.src-ruby'};" :infojs-opt nil :creator "Emacs 29.4 (Org mode 9.6.15)" :with-latex t :latex-header nil :title (#("Genenetwork2 Dockerized" 0 23 (:parent #148))) :date nil :author (#("unknown" 0 7 (:parent #152))) :email "unknown@genenetwork-development" :language "en" :select-tags ("export") :exclude-tags ("noexport") :headline-levels 3 :preserve-breaks nil :section-numbers nil :time-stamp-file t :with-archived-trees headline :with-author t :with-broken-links nil :with-clocks nil :with-creator nil :with-date t :with-drawers (not "LOGBOOK") :with-email nil :with-emphasize t :with-entities t :with-fixed-width t :with-footnotes t :with-inlinetasks t :with-planning nil :with-priority nil :with-properties nil :with-smart-quotes nil :with-special-strings t :with-statistics-cookies t :with-sub-superscript t :with-toc nil :with-tables t :with-tags t :with-tasks t :with-timestamps t :with-title t :with-todo-keywords t :cite-export (basic nil nil) :bibliography nil :filter-body nil :filter-bold nil :filter-babel-call nil :filter-center-block nil :filter-clock nil :filter-code nil :filter-diary-sexp nil :filter-drawer nil :filter-dynamic-block nil :filter-entity nil :filter-example-block nil :filter-export-block nil :filter-export-snippet nil :filter-final-output (org-html-final-function) :filter-fixed-width nil :filter-footnote-definition nil :filter-footnote-reference nil :filter-headline nil :filter-horizontal-rule nil :filter-inline-babel-call nil :filter-inline-src-block nil :filter-inlinetask nil :filter-italic nil :filter-item nil :filter-keyword nil :filter-latex-environment nil :filter-latex-fragment nil :filter-line-break nil :filter-link nil :filter-node-property nil :filter-options (org-html-infojs-install-script) :filter-paragraph nil :filter-parse-tree (org-html-image-link-filter) :filter-plain-list nil :filter-plain-text nil :filter-planning nil :filter-property-drawer nil :filter-quote-block nil :filter-radio-target nil :filter-section nil :filter-special-block nil :filter-src-block nil :filter-statistics-cookie nil :filter-strike-through nil :filter-subscript nil :filter-superscript nil :filter-table nil :filter-table-cell nil :filter-table-row nil :filter-target nil :filter-timestamp nil :filter-underline nil :filter-verbatim nil :filter-verse-block nil :ignore-list nil :parse-tree (org-data (:begin 1 :contents-begin 1 :contents-end 2817 :end 2817 :robust-begin 3 :robust-end 2815 :post-blank 0 :post-affiliated 1 :path nil :mode org-data :CATEGORY nil :granularity nil) (section (:begin 1 :end 35 :contents-begin 1 :contents-end 34 :robust-begin 1 :robust-end 32 :post-blank 1 :post-affiliated 1 :mode first-section :granularity nil :parent #338) (keyword (:key "TITLE" :value "Genenetwork2 Dockerized" :begin 1 :end 34 :post-blank 0 :post-affiliated 1 :mode top-comment :granularity nil :parent #341))) (headline (:raw-value "Table of Contents" :begin 35 :end 260 :pre-blank 0 :contents-begin 113 :contents-end 259 :robust-begin 115 :robust-end 257 :level 1 :priority nil :tags ("TOC") :todo-keyword nil :todo-type nil :post-blank 1 :footnote-section-p nil :archivedp nil :commentedp nil :post-affiliated 35 :title (#("Table of Contents" 0 17 (:parent #342))) :mode nil :granularity nil :parent #338) (section (:begin 113 :end 260 :contents-begin 113 :contents-end 259 :robust-begin 113 :robust-end 257 :post-blank 1 :post-affiliated 113 :mode section :granularity nil :parent #342) (plain-list (:type unordered :begin 113 :end 259 :contents-begin 113 :contents-end 259 :structure ((113 0 "- " nil nil nil 147) (147 0 "- " nil nil nil 209) (209 0 "- " nil nil nil 259)) :post-blank 0 :post-affiliated 113 :mode planning :granularity nil :parent #345) (item (:bullet "- " :begin 113 :end 147 :contents-begin 115 :contents-end 147 :checkbox nil :counter nil :structure ((113 0 "- " nil nil nil 147) (147 0 "- " nil nil nil 209) (209 0 "- " nil nil nil 259)) :pre-blank 0 :post-blank 0 :post-affiliated 113 :tag nil :mode item :granularity nil :parent #348) (paragraph (:begin 115 :end 147 :contents-begin 115 :contents-end 147 :post-blank 0 :post-affiliated 115 :mode nil :granularity nil :parent #351) (link (:type "custom-id" :path "introduction" :format bracket :raw-link "#introduction" :application nil :search-option nil :begin 115 :end 146 :contents-begin 132 :contents-end 144 :post-blank 0 :parent #354) #("Introduction" 0 12 (:parent #357))) #("\n" 0 1 (:parent #354)))) (item (:bullet "- " :begin 147 :end 209 :contents-begin 149 :contents-end 209 :checkbox nil :counter nil :structure ((113 0 "- " nil nil nil 147) (147 0 "- " nil nil nil 209) (209 0 "- " nil nil nil 259)) :pre-blank 0 :post-blank 0 :post-affiliated 147 :tag nil :mode item :granularity nil :parent #348) (paragraph (:begin 149 :end 209 :contents-begin 149 :contents-end 209 :post-blank 0 :post-affiliated 149 :mode nil :granularity nil :parent #352) (link (:type "custom-id" :path "creating-the-docker-images" :format bracket :raw-link "#creating-the-docker-images" :application nil :search-option nil :begin 149 :end 208 :contents-begin 180 :contents-end 206 :post-blank 0 :parent #355) #("Creating the Docker Images" 0 26 (:parent #358))) #("\n" 0 1 (:parent #355)))) (item (:bullet "- " :begin 209 :end 259 :contents-begin 211 :contents-end 259 :checkbox nil :counter nil :structure ((113 0 "- " nil nil nil 147) (147 0 "- " nil nil nil 209) (209 0 "- " nil nil nil 259)) :pre-blank 0 :post-blank 0 :post-affiliated 209 :tag nil :mode item :granularity nil :parent #348) (paragraph (:begin 211 :end 259 :contents-begin 211 :contents-end 259 :post-blank 0 :post-affiliated 211 :mode nil :granularity nil :parent #353) (link (:type "custom-id" :path "pushing-to-dockerhub" :format bracket :raw-link "#pushing-to-dockerhub" :application nil :search-option nil :begin 211 :end 258 :contents-begin 236 :contents-end 256 :post-blank 0 :parent #356) #("Pushing to DockerHub" 0 20 (:parent #359))) #("\n" 0 1 (:parent #356))))))) (headline (:raw-value "Introduction" :begin 260 :end 926 :pre-blank 1 :contents-begin 276 :contents-end 925 :robust-begin 278 :robust-end 923 :level 1 :priority nil :tags nil :todo-keyword nil :todo-type nil :post-blank 1 :footnote-section-p nil :archivedp nil :commentedp nil :post-affiliated 260 :title (#("Introduction" 0 12 (:parent #343))) :mode nil :granularity nil :parent #338) (section (:begin 276 :end 926 :contents-begin 276 :contents-end 925 :robust-begin 276 :robust-end 923 :post-blank 1 :post-affiliated 276 :mode section :granularity nil :parent #343) (paragraph (:begin 276 :end 600 :contents-begin 276 :contents-end 599 :post-blank 1 :post-affiliated 276 :mode planning :granularity nil :parent #346) #("The CI(Continuous Integration) system for Genenetwork2 uses " 0 60 (:parent #349)) (link (:type "https" :path "//github.com/features/actions" :format bracket :raw-link "https://github.com/features/actions" :application nil :search-option nil :begin 336 :end 391 :contents-begin 375 :contents-end 389 :post-blank 0 :parent #349) #("Github\nActions" 0 14 (:parent #353))) #(". As such, it's important to have a way to run tests using\nfacilities provided by GUIX in a reproducible way. This project\nleverages GUIX to generate a docker container from which the unittests\nare ran from.\n" 0 208 (:parent #349))) (paragraph (:begin 600 :end 830 :contents-begin 600 :contents-end 829 :post-blank 1 :post-affiliated 600 :mode nil :granularity nil :parent #346) #("Find instructions on how to set docker up inside GUIX " 0 54 (:parent #350)) (link (:type "https" :path "//github.com/pjotrp/guix-notes/blob/master/CONTAINERS.org#run-docker" :format bracket :raw-link "https://github.com/pjotrp/guix-notes/blob/master/CONTAINERS.org#run-docker" :application nil :search-option nil :begin 654 :end 738 :contents-begin 732 :contents-end 736 :post-blank 0 :parent #350) #("here" 0 4 (:parent #354))) #(". This\ndocument will not get into that. It's assumed that you have a working\ndocker setup.\n" 0 91 (:parent #350))) (paragraph (:begin 830 :end 925 :contents-begin 830 :contents-end 925 :post-blank 0 :post-affiliated 830 :mode nil :granularity nil :parent #346) #("The rest of this document outlines how the docker container used in\nthe CI builds was created.\n" 0 95 (:parent #351))))) (headline (:raw-value "Creating the Docker Images" :begin 926 :end 2194 :pre-blank 1 :contents-begin 956 :contents-end 2193 :robust-begin 958 :robust-end 2191 :level 1 :priority nil :tags nil :todo-keyword nil :todo-type nil :post-blank 1 :footnote-section-p nil :archivedp nil :commentedp nil :post-affiliated 926 :title (#("Creating the Docker Images" 0 26 (:parent #344))) :mode nil :granularity nil :parent #338) (section (:begin 956 :end 2194 :contents-begin 956 :contents-end 2193 :robust-begin 956 :robust-end 2191 :post-blank 1 :post-affiliated 956 :mode section :granularity nil :parent #344) (paragraph (:begin 956 :end 1071 :contents-begin 956 :contents-end 1070 :post-blank 1 :post-affiliated 956 :mode planning :granularity nil :parent #347) #("The general idea is that GUIX is used to generate a set of binaries,\nwhich will be added to a base mariaDB image.\n" 0 114 (:parent #350))) (paragraph (:begin 1071 :end 1117 :contents-begin 1071 :contents-end 1116 :post-blank 1 :post-affiliated 1071 :mode nil :granularity nil :parent #347) #("First create the gn2 tar archive by running:\n" 0 45 (:parent #351))) (src-block (:language "sh" :switches nil :parameters nil :begin 1117 :end 1343 :number-lines nil :preserve-indent nil :retain-labels t :use-labels t :label-fmt nil :value "env GUIX_PACKAGE_PATH=\"/home/bonface/projects/guix-bioinformatics:/home/bonface/projects/guix-past/modules\" \\\n ./pre-inst-env guix pack --no-grafts\\\n -S /gn2-profile=/ \\\n screen genenetwork2\n" :post-blank 1 :post-affiliated 1117 :mode nil :granularity nil :parent #347)) (paragraph (:begin 1343 :end 1387 :contents-begin 1343 :contents-end 1386 :post-blank 1 :post-affiliated 1343 :mode nil :granularity nil :parent #347) #("The output will look something similar to:\n" 0 43 (:parent #353))) (fixed-width (:begin 1387 :end 1454 :value "/gnu/store/x3m77vwaqcwba24p5s4lrb7w2ii16lj9-tarball-pack.tar.gz" :post-blank 2 :post-affiliated 1387 :mode nil :granularity nil :parent #347)) (paragraph (:begin 1454 :end 1640 :contents-begin 1454 :contents-end 1639 :post-blank 1 :post-affiliated 1454 :mode nil :granularity nil :parent #347) #("Now create a folder from which will host the following dockerfile. You\ncan name this file Dockerfile. Note that mariadb is the base image\nsince it already has mariadb installed for us.\n" 0 185 (:parent #355))) (src-block (:language "conf" :switches nil :parameters nil :begin 1640 :end 1847 :number-lines nil :preserve-indent nil :retain-labels t :use-labels t :label-fmt nil :value "FROM mariadb:latest\n\nCOPY ./gn2.tar.gz /tmp/gn2.tar.gz\nRUN tar -xzf /tmp/gn2.tar.gz -C / && rm -f /tmp/gn2.tar.gz && \\\n mkdir -p /usr/local/mysql /genotype_files/genotype/json\n" :post-blank 1 :post-affiliated 1640 :mode nil :granularity nil :parent #347)) (paragraph (:begin 1847 :end 1895 :contents-begin 1847 :contents-end 1894 :post-blank 1 :post-affiliated 1847 :mode nil :granularity nil :parent #347) #("Build the image(Note the fullstop at the end):\n" 0 47 (:parent #357))) (fixed-width (:begin 1895 :end 1955 :value "sudo docker build -t genenetwork2:latest -f Dockerfile ." :post-blank 2 :post-affiliated 1895 :mode nil :granularity nil :parent #347)) (paragraph (:begin 1955 :end 2009 :contents-begin 1955 :contents-end 2008 :post-blank 1 :post-affiliated 1955 :mode nil :granularity nil :parent #347) #("To load the image interactively you've just created:\n" 0 53 (:parent #359))) (fixed-width (:begin 2009 :end 2054 :value "docker run -ti \"genenetwork2:latest\" bash" :post-blank 2 :post-affiliated 2009 :mode nil :granularity nil :parent #347)) (paragraph (:begin 2054 :end 2141 :contents-begin 2054 :contents-end 2140 :post-blank 1 :post-affiliated 2054 :mode nil :granularity nil :parent #347) #("Assuming you have a docker instance running, you could always run\ncommands in it e.g:\n" 0 86 (:parent #361))) (fixed-width (:begin 2141 :end 2193 :value "docker run \"genenetwork2:latest\" python --version" :post-blank 1 :post-affiliated 2141 :mode nil :granularity nil :parent #347)))) (headline (:raw-value "Pushing to DockerHub" :begin 2194 :end 2817 :pre-blank 1 :contents-begin 2218 :contents-end 2817 :robust-begin 2220 :robust-end 2815 :level 1 :priority nil :tags nil :todo-keyword nil :todo-type nil :post-blank 0 :footnote-section-p nil :archivedp nil :commentedp nil :post-affiliated 2194 :title (#("Pushing to DockerHub" 0 20 (:parent #345))) :mode nil :granularity nil :parent #338) (section (:begin 2218 :end 2817 :contents-begin 2218 :contents-end 2817 :robust-begin 2218 :robust-end 2815 :post-blank 0 :post-affiliated 2218 :mode section :granularity nil :parent #345) (paragraph (:begin 2218 :end 2325 :contents-begin 2218 :contents-end 2324 :post-blank 1 :post-affiliated 2218 :mode planning :granularity nil :parent #348) #("We use DockerHub to store the docker images from which we use on our\nCI environment using Github Actions.\n" 0 106 (:parent #351))) (paragraph (:begin 2325 :end 2447 :contents-begin 2325 :contents-end 2446 :post-blank 1 :post-affiliated 2325 :mode nil :granularity nil :parent #348) #("To push to dockerhub, first get the image name by running " 0 58 (:parent #352)) (verbatim (:begin 2383 :end 2398 :post-blank 0 :value "docker\nimages" :parent #352)) #(". Push to dockerhub using a command similar to:\n" 0 48 (:parent #352))) (fixed-width (:begin 2447 :end 2494 :value "docker push bonfacekilz/genenetwork2:latest" :post-blank 2 :post-affiliated 2447 :mode nil :granularity nil :parent #348)) (paragraph (:begin 2494 :end 2537 :contents-begin 2494 :contents-end 2536 :post-blank 1 :post-affiliated 2494 :mode nil :granularity nil :parent #348) #("Right now, we have 2 images on DockerHub:\n" 0 42 (:parent #354))) (plain-list (:type unordered :begin 2537 :end 2817 :contents-begin 2537 :contents-end 2817 :structure ((2537 0 "- " nil nil nil 2701) (2701 0 "- " nil nil nil 2817)) :post-blank 0 :post-affiliated 2537 :mode nil :granularity nil :parent #348) (item (:bullet "- " :begin 2537 :end 2701 :contents-begin 2539 :contents-end 2701 :checkbox nil :counter nil :structure ((2537 0 "- " nil nil nil 2701) (2701 0 "- " nil nil nil 2817)) :pre-blank 0 :post-blank 0 :post-affiliated 2537 :tag nil :mode item :granularity nil :parent #355) (paragraph (:begin 2539 :end 2701 :contents-begin 2539 :contents-end 2701 :post-blank 0 :post-affiliated 2539 :mode nil :granularity nil :parent #358) (link (:type "https" :path "//hub.docker.com/repository/docker/bonfacekilz/python2-genenetwork2" :format plain :raw-link "https://hub.docker.com/repository/docker/bonfacekilz/python2-genenetwork2" :application nil :search-option nil :begin 2539 :end 2612 :contents-begin nil :contents-end nil :post-blank 0 :parent #361)) #(":\n Contains the python2 version of gn2. Don't use this. Please use the\n python3 image!\n" 0 89 (:parent #361)))) (item (:bullet "- " :begin 2701 :end 2817 :contents-begin 2703 :contents-end 2817 :checkbox nil :counter nil :structure ((2537 0 "- " nil nil nil 2701) (2701 0 "- " nil nil nil 2817)) :pre-blank 0 :post-blank 0 :post-affiliated 2701 :tag nil :mode item :granularity nil :parent #355) (paragraph (:begin 2703 :end 2817 :contents-begin 2703 :contents-end 2817 :post-blank 0 :post-affiliated 2703 :mode nil :granularity nil :parent #359) (link (:type "https" :path "//hub.docker.com/repository/docker/bonfacekilz/python3-genenetwork2" :format plain :raw-link "https://hub.docker.com/repository/docker/bonfacekilz/python3-genenetwork2" :application nil :search-option nil :begin 2703 :end 2776 :contents-begin nil :contents-end nil :post-blank 0 :parent #362)) #(":\n Contains the python3 version of gn2.\n" 0 41 (:parent #362)))))))) :headline-offset 0 :headline-numbering nil :id-alist nil :citations nil :id-local-cache #)) #f(compiled-function (element) #)((section (:begin 113 :end 260 :contents-begin 113 :contents-end 259 :robust-begin 113 :robust-end 257 :post-blank 1 :post-affiliated 113 :mode section :granularity nil :parent (headline (:raw-value "Table of Contents" :begin 35 :end 260 :pre-blank 0 :contents-begin 113 :contents-end 259 :robust-begin 115 :robust-end 257 :level 1 :priority nil :tags ("TOC") :todo-keyword nil :todo-type nil :post-blank 1 :footnote-section-p nil :archivedp nil :commentedp nil :post-affiliated 35 :title (#("Table of Contents" 0 17 (:parent #24))) :mode nil :granularity nil :parent (org-data (:begin 1 :contents-begin 1 :contents-end 2817 :end 2817 :robust-begin 3 :robust-end 2815 :post-blank 0 :post-affiliated 1 :path nil :mode org-data :CATEGORY nil :granularity nil) (section (:begin 1 :end 35 :contents-begin 1 :contents-end 34 :robust-begin 1 :robust-end 32 :post-blank 1 :post-affiliated 1 :mode first-section :granularity nil :parent #70) (keyword (:key "TITLE" :value "Genenetwork2 Dockerized" :begin 1 :end 34 :post-blank 0 :post-affiliated 1 :mode top-comment :granularity nil :parent #73))) #24 (headline (:raw-value "Introduction" :begin 260 :end 926 :pre-blank 1 :contents-begin 276 :contents-end 925 :robust-begin 278 :robust-end 923 :level 1 :priority nil :tags nil :todo-keyword nil :todo-type nil :post-blank 1 :footnote-section-p nil :archivedp nil :commentedp nil :post-affiliated 260 :title (#("Introduction" 0 12 (:parent #75))) :mode nil :granularity nil :parent #70) (section (:begin 276 :end 926 :contents-begin 276 :contents-end 925 :robust-begin 276 :robust-end 923 :post-blank 1 :post-affiliated 276 :mode section :granularity nil :parent #75) (paragraph (:begin 276 :end 600 :contents-begin 276 :contents-end 599 :post-blank 1 :post-affiliated 276 :mode planning :granularity nil :parent #78) #("The CI(Continuous Integration) system for Genenetwork2 uses " 0 60 (:parent #81)) (link (:type "https" :path "//github.com/features/actions" :format bracket :raw-link "https://github.com/features/actions" :application nil :search-option nil :begin 336 :end 391 :contents-begin 375 :contents-end 389 :post-blank 0 :parent #81) #("Github\nActions" 0 14 (:parent #85))) #(". As such, it's important to have a way to run tests using\nfacilities provided by GUIX in a reproducible way. This project\nleverages GUIX to generate a docker container from which the unittests\nare ran from.\n" 0 208 (:parent #81))) (paragraph (:begin 600 :end 830 :contents-begin 600 :contents-end 829 :post-blank 1 :post-affiliated 600 :mode nil :granularity nil :parent #78) #("Find instructions on how to set docker up inside GUIX " 0 54 (:parent #82)) (link (:type "https" :path "//github.com/pjotrp/guix-notes/blob/master/CONTAINERS.org#run-docker" :format bracket :raw-link "https://github.com/pjotrp/guix-notes/blob/master/CONTAINERS.org#run-docker" :application nil :search-option nil :begin 654 :end 738 :contents-begin 732 :contents-end 736 :post-blank 0 :parent #82) #("here" 0 4 (:parent #86))) #(". This\ndocument will not get into that. It's assumed that you have a working\ndocker setup.\n" 0 91 (:parent #82))) (paragraph (:begin 830 :end 925 :contents-begin 830 :contents-end 925 :post-blank 0 :post-affiliated 830 :mode nil :granularity nil :parent #78) #("The rest of this document outlines how the docker container used in\nthe CI builds was created.\n" 0 95 (:parent #83))))) (headline (:raw-value "Creating the Docker Images" :begin 926 :end 2194 :pre-blank 1 :contents-begin 956 :contents-end 2193 :robust-begin 958 :robust-end 2191 :level 1 :priority nil :tags nil :todo-keyword nil :todo-type nil :post-blank 1 :footnote-section-p nil :archivedp nil :commentedp nil :post-affiliated 926 :title (#("Creating the Docker Images" 0 26 (:parent #76))) :mode nil :granularity nil :parent #70) (section (:begin 956 :end 2194 :contents-begin 956 :contents-end 2193 :robust-begin 956 :robust-end 2191 :post-blank 1 :post-affiliated 956 :mode section :granularity nil :parent #76) (paragraph (:begin 956 :end 1071 :contents-begin 956 :contents-end 1070 :post-blank 1 :post-affiliated 956 :mode planning :granularity nil :parent #79) #("The general idea is that GUIX is used to generate a set of binaries,\nwhich will be added to a base mariaDB image.\n" 0 114 (:parent #82))) (paragraph (:begin 1071 :end 1117 :contents-begin 1071 :contents-end 1116 :post-blank 1 :post-affiliated 1071 :mode nil :granularity nil :parent #79) #("First create the gn2 tar archive by running:\n" 0 45 (:parent #83))) (src-block (:language "sh" :switches nil :parameters nil :begin 1117 :end 1343 :number-lines nil :preserve-indent nil :retain-labels t :use-labels t :label-fmt nil :value "env GUIX_PACKAGE_PATH=\"/home/bonface/projects/guix-bioinformatics:/home/bonface/projects/guix-past/modules\" \\\n ./pre-inst-env guix pack --no-grafts\\\n -S /gn2-profile=/ \\\n screen genenetwork2\n" :post-blank 1 :post-affiliated 1117 :mode nil :granularity nil :parent #79)) (paragraph (:begin 1343 :end 1387 :contents-begin 1343 :contents-end 1386 :post-blank 1 :post-affiliated 1343 :mode nil :granularity nil :parent #79) #("The output will look something similar to:\n" 0 43 (:parent #85))) (fixed-width (:begin 1387 :end 1454 :value "/gnu/store/x3m77vwaqcwba24p5s4lrb7w2ii16lj9-tarball-pack.tar.gz" :post-blank 2 :post-affiliated 1387 :mode nil :granularity nil :parent #79)) (paragraph (:begin 1454 :end 1640 :contents-begin 1454 :contents-end 1639 :post-blank 1 :post-affiliated 1454 :mode nil :granularity nil :parent #79) #("Now create a folder from which will host the following dockerfile. You\ncan name this file Dockerfile. Note that mariadb is the base image\nsince it already has mariadb installed for us.\n" 0 185 (:parent #87))) (src-block (:language "conf" :switches nil :parameters nil :begin 1640 :end 1847 :number-lines nil :preserve-indent nil :retain-labels t :use-labels t :label-fmt nil :value "FROM mariadb:latest\n\nCOPY ./gn2.tar.gz /tmp/gn2.tar.gz\nRUN tar -xzf /tmp/gn2.tar.gz -C / && rm -f /tmp/gn2.tar.gz && \\\n mkdir -p /usr/local/mysql /genotype_files/genotype/json\n" :post-blank 1 :post-affiliated 1640 :mode nil :granularity nil :parent #79)) (paragraph (:begin 1847 :end 1895 :contents-begin 1847 :contents-end 1894 :post-blank 1 :post-affiliated 1847 :mode nil :granularity nil :parent #79) #("Build the image(Note the fullstop at the end):\n" 0 47 (:parent #89))) (fixed-width (:begin 1895 :end 1955 :value "sudo docker build -t genenetwork2:latest -f Dockerfile ." :post-blank 2 :post-affiliated 1895 :mode nil :granularity nil :parent #79)) (paragraph (:begin 1955 :end 2009 :contents-begin 1955 :contents-end 2008 :post-blank 1 :post-affiliated 1955 :mode nil :granularity nil :parent #79) #("To load the image interactively you've just created:\n" 0 53 (:parent #91))) (fixed-width (:begin 2009 :end 2054 :value "docker run -ti \"genenetwork2:latest\" bash" :post-blank 2 :post-affiliated 2009 :mode nil :granularity nil :parent #79)) (paragraph (:begin 2054 :end 2141 :contents-begin 2054 :contents-end 2140 :post-blank 1 :post-affiliated 2054 :mode nil :granularity nil :parent #79) #("Assuming you have a docker instance running, you could always run\ncommands in it e.g:\n" 0 86 (:parent #93))) (fixed-width (:begin 2141 :end 2193 :value "docker run \"genenetwork2:latest\" python --version" :post-blank 1 :post-affiliated 2141 :mode nil :granularity nil :parent #79)))) (headline (:raw-value "Pushing to DockerHub" :begin 2194 :end 2817 :pre-blank 1 :contents-begin 2218 :contents-end 2817 :robust-begin 2220 :robust-end 2815 :level 1 :priority nil :tags nil :todo-keyword nil :todo-type nil :post-blank 0 :footnote-section-p nil :archivedp nil :commentedp nil :post-affiliated 2194 :title (#("Pushing to DockerHub" 0 20 (:parent #77))) :mode nil :granularity nil :parent #70) (section (:begin 2218 :end 2817 :contents-begin 2218 :contents-end 2817 :robust-begin 2218 :robust-end 2815 :post-blank 0 :post-affiliated 2218 :mode section :granularity nil :parent #77) (paragraph (:begin 2218 :end 2325 :contents-begin 2218 :contents-end 2324 :post-blank 1 :post-affiliated 2218 :mode planning :granularity nil :parent #80) #("We use DockerHub to store the docker images from which we use on our\nCI environment using Github Actions.\n" 0 106 (:parent #83))) (paragraph (:begin 2325 :end 2447 :contents-begin 2325 :contents-end 2446 :post-blank 1 :post-affiliated 2325 :mode nil :granularity nil :parent #80) #("To push to dockerhub, first get the image name by running " 0 58 (:parent #84)) (verbatim (:begin 2383 :end 2398 :post-blank 0 :value "docker\nimages" :parent #84)) #(". Push to dockerhub using a command similar to:\n" 0 48 (:parent #84))) (fixed-width (:begin 2447 :end 2494 :value "docker push bonfacekilz/genenetwork2:latest" :post-blank 2 :post-affiliated 2447 :mode nil :granularity nil :parent #80)) (paragraph (:begin 2494 :end 2537 :contents-begin 2494 :contents-end 2536 :post-blank 1 :post-affiliated 2494 :mode nil :granularity nil :parent #80) #("Right now, we have 2 images on DockerHub:\n" 0 42 (:parent #86))) (plain-list (:type unordered :begin 2537 :end 2817 :contents-begin 2537 :contents-end 2817 :structure ((2537 0 "- " nil nil nil 2701) (2701 0 "- " nil nil nil 2817)) :post-blank 0 :post-affiliated 2537 :mode nil :granularity nil :parent #80) (item (:bullet "- " :begin 2537 :end 2701 :contents-begin 2539 :contents-end 2701 :checkbox nil :counter nil :structure ((2537 0 "- " nil nil nil 2701) (2701 0 "- " nil nil nil 2817)) :pre-blank 0 :post-blank 0 :post-affiliated 2537 :tag nil :mode item :granularity nil :parent #87) (paragraph (:begin 2539 :end 2701 :contents-begin 2539 :contents-end 2701 :post-blank 0 :post-affiliated 2539 :mode nil :granularity nil :parent #90) (link (:type "https" :path "//hub.docker.com/repository/docker/bonfacekilz/python2-genenetwork2" :format plain :raw-link "https://hub.docker.com/repository/docker/bonfacekilz/python2-genenetwork2" :application nil :search-option nil :begin 2539 :end 2612 :contents-begin nil :contents-end nil :post-blank 0 :parent #93)) #(":\n Contains the python2 version of gn2. Don't use this. Please use the\n python3 image!\n" 0 89 (:parent #93)))) (item (:bullet "- " :begin 2701 :end 2817 :contents-begin 2703 :contents-end 2817 :checkbox nil :counter nil :structure ((2537 0 "- " nil nil nil 2701) (2701 0 "- " nil nil nil 2817)) :pre-blank 0 :post-blank 0 :post-affiliated 2701 :tag nil :mode item :granularity nil :parent #87) (paragraph (:begin 2703 :end 2817 :contents-begin 2703 :contents-end 2817 :post-blank 0 :post-affiliated 2703 :mode nil :granularity nil :parent #91) (link (:type "https" :path "//hub.docker.com/repository/docker/bonfacekilz/python3-genenetwork2" :format plain :raw-link "https://hub.docker.com/repository/docker/bonfacekilz/python3-genenetwork2" :application nil :search-option nil :begin 2703 :end 2776 :contents-begin nil :contents-end nil :post-blank 0 :parent #94)) #(":\n Contains the python3 version of gn2.\n" 0 41 (:parent #94))))))))) #0)) (plain-list (:type unordered :begin 113 :end 259 :contents-begin 113 :contents-end 259 :structure ((113 0 "- " nil nil nil 147) (147 0 "- " nil nil nil 209) (209 0 "- " nil nil nil 259)) :post-blank 0 :post-affiliated 113 :mode planning :granularity nil :parent #0) (item (:bullet "- " :begin 113 :end 147 :contents-begin 115 :contents-end 147 :checkbox nil :counter nil :structure ((113 0 "- " nil nil nil 147) (147 0 "- " nil nil nil 209) (209 0 "- " nil nil nil 259)) :pre-blank 0 :post-blank 0 :post-affiliated 113 :tag nil :mode item :granularity nil :parent #3) (paragraph (:begin 115 :end 147 :contents-begin 115 :contents-end 147 :post-blank 0 :post-affiliated 115 :mode nil :granularity nil :parent #6) (link (:type "custom-id" :path "introduction" :format bracket :raw-link "#introduction" :application nil :search-option nil :begin 115 :end 146 :contents-begin 132 :contents-end 144 :post-blank 0 :parent #9) #("Introduction" 0 12 (:parent #12))) #("\n" 0 1 (:parent #9)))) (item (:bullet "- " :begin 147 :end 209 :contents-begin 149 :contents-end 209 :checkbox nil :counter nil :structure ((113 0 "- " nil nil nil 147) (147 0 "- " nil nil nil 209) (209 0 "- " nil nil nil 259)) :pre-blank 0 :post-blank 0 :post-affiliated 147 :tag nil :mode item :granularity nil :parent #3) (paragraph (:begin 149 :end 209 :contents-begin 149 :contents-end 209 :post-blank 0 :post-affiliated 149 :mode nil :granularity nil :parent #7) (link (:type "custom-id" :path "creating-the-docker-images" :format bracket :raw-link "#creating-the-docker-images" :application nil :search-option nil :begin 149 :end 208 :contents-begin 180 :contents-end 206 :post-blank 0 :parent #10) #("Creating the Docker Images" 0 26 (:parent #13))) #("\n" 0 1 (:parent #10)))) (item (:bullet "- " :begin 209 :end 259 :contents-begin 211 :contents-end 259 :checkbox nil :counter nil :structure ((113 0 "- " nil nil nil 147) (147 0 "- " nil nil nil 209) (209 0 "- " nil nil nil 259)) :pre-blank 0 :post-blank 0 :post-affiliated 209 :tag nil :mode item :granularity nil :parent #3) (paragraph (:begin 211 :end 259 :contents-begin 211 :contents-end 259 :post-blank 0 :post-affiliated 211 :mode nil :granularity nil :parent #8) (link (:type "custom-id" :path "pushing-to-dockerhub" :format bracket :raw-link "#pushing-to-dockerhub" :application nil :search-option nil :begin 211 :end 258 :contents-begin 236 :contents-end 256 :post-blank 0 :parent #11) #("Pushing to DockerHub" 0 20 (:parent #14))) #("\n" 0 1 (:parent #11))))))) mapconcat(#f(compiled-function (element) #) ((section (:begin 113 :end 260 :contents-begin 113 :contents-end 259 :robust-begin 113 :robust-end 257 :post-blank 1 :post-affiliated 113 :mode section :granularity nil :parent (headline (:raw-value "Table of Contents" :begin 35 :end 260 :pre-blank 0 :contents-begin 113 :contents-end 259 :robust-begin 115 :robust-end 257 :level 1 :priority nil :tags ("TOC") :todo-keyword nil :todo-type nil :post-blank 1 :footnote-section-p nil :archivedp nil :commentedp nil :post-affiliated 35 :title (#("Table of Contents" 0 17 (:parent #25))) :mode nil :granularity nil :parent (org-data (:begin 1 :contents-begin 1 :contents-end 2817 :end 2817 :robust-begin 3 :robust-end 2815 :post-blank 0 :post-affiliated 1 :path nil :mode org-data :CATEGORY nil :granularity nil) (section (:begin 1 :end 35 :contents-begin 1 :contents-end 34 :robust-begin 1 :robust-end 32 :post-blank 1 :post-affiliated 1 :mode first-section :granularity nil :parent #71) (keyword (:key "TITLE" :value "Genenetwork2 Dockerized" :begin 1 :end 34 :post-blank 0 :post-affiliated 1 :mode top-comment :granularity nil :parent #74))) #25 (headline (:raw-value "Introduction" :begin 260 :end 926 :pre-blank 1 :contents-begin 276 :contents-end 925 :robust-begin 278 :robust-end 923 :level 1 :priority nil :tags nil :todo-keyword nil :todo-type nil :post-blank 1 :footnote-section-p nil :archivedp nil :commentedp nil :post-affiliated 260 :title (#("Introduction" 0 12 (:parent #76))) :mode nil :granularity nil :parent #71) (section (:begin 276 :end 926 :contents-begin 276 :contents-end 925 :robust-begin 276 :robust-end 923 :post-blank 1 :post-affiliated 276 :mode section :granularity nil :parent #76) (paragraph (:begin 276 :end 600 :contents-begin 276 :contents-end 599 :post-blank 1 :post-affiliated 276 :mode planning :granularity nil :parent #79) #("The CI(Continuous Integration) system for Genenetwork2 uses " 0 60 (:parent #82)) (link (:type "https" :path "//github.com/features/actions" :format bracket :raw-link "https://github.com/features/actions" :application nil :search-option nil :begin 336 :end 391 :contents-begin 375 :contents-end 389 :post-blank 0 :parent #82) #("Github\nActions" 0 14 (:parent #86))) #(". As such, it's important to have a way to run tests using\nfacilities provided by GUIX in a reproducible way. This project\nleverages GUIX to generate a docker container from which the unittests\nare ran from.\n" 0 208 (:parent #82))) (paragraph (:begin 600 :end 830 :contents-begin 600 :contents-end 829 :post-blank 1 :post-affiliated 600 :mode nil :granularity nil :parent #79) #("Find instructions on how to set docker up inside GUIX " 0 54 (:parent #83)) (link (:type "https" :path "//github.com/pjotrp/guix-notes/blob/master/CONTAINERS.org#run-docker" :format bracket :raw-link "https://github.com/pjotrp/guix-notes/blob/master/CONTAINERS.org#run-docker" :application nil :search-option nil :begin 654 :end 738 :contents-begin 732 :contents-end 736 :post-blank 0 :parent #83) #("here" 0 4 (:parent #87))) #(". This\ndocument will not get into that. It's assumed that you have a working\ndocker setup.\n" 0 91 (:parent #83))) (paragraph (:begin 830 :end 925 :contents-begin 830 :contents-end 925 :post-blank 0 :post-affiliated 830 :mode nil :granularity nil :parent #79) #("The rest of this document outlines how the docker container used in\nthe CI builds was created.\n" 0 95 (:parent #84))))) (headline (:raw-value "Creating the Docker Images" :begin 926 :end 2194 :pre-blank 1 :contents-begin 956 :contents-end 2193 :robust-begin 958 :robust-end 2191 :level 1 :priority nil :tags nil :todo-keyword nil :todo-type nil :post-blank 1 :footnote-section-p nil :archivedp nil :commentedp nil :post-affiliated 926 :title (#("Creating the Docker Images" 0 26 (:parent #77))) :mode nil :granularity nil :parent #71) (section (:begin 956 :end 2194 :contents-begin 956 :contents-end 2193 :robust-begin 956 :robust-end 2191 :post-blank 1 :post-affiliated 956 :mode section :granularity nil :parent #77) (paragraph (:begin 956 :end 1071 :contents-begin 956 :contents-end 1070 :post-blank 1 :post-affiliated 956 :mode planning :granularity nil :parent #80) #("The general idea is that GUIX is used to generate a set of binaries,\nwhich will be added to a base mariaDB image.\n" 0 114 (:parent #83))) (paragraph (:begin 1071 :end 1117 :contents-begin 1071 :contents-end 1116 :post-blank 1 :post-affiliated 1071 :mode nil :granularity nil :parent #80) #("First create the gn2 tar archive by running:\n" 0 45 (:parent #84))) (src-block (:language "sh" :switches nil :parameters nil :begin 1117 :end 1343 :number-lines nil :preserve-indent nil :retain-labels t :use-labels t :label-fmt nil :value "env GUIX_PACKAGE_PATH=\"/home/bonface/projects/guix-bioinformatics:/home/bonface/projects/guix-past/modules\" \\\n ./pre-inst-env guix pack --no-grafts\\\n -S /gn2-profile=/ \\\n screen genenetwork2\n" :post-blank 1 :post-affiliated 1117 :mode nil :granularity nil :parent #80)) (paragraph (:begin 1343 :end 1387 :contents-begin 1343 :contents-end 1386 :post-blank 1 :post-affiliated 1343 :mode nil :granularity nil :parent #80) #("The output will look something similar to:\n" 0 43 (:parent #86))) (fixed-width (:begin 1387 :end 1454 :value "/gnu/store/x3m77vwaqcwba24p5s4lrb7w2ii16lj9-tarball-pack.tar.gz" :post-blank 2 :post-affiliated 1387 :mode nil :granularity nil :parent #80)) (paragraph (:begin 1454 :end 1640 :contents-begin 1454 :contents-end 1639 :post-blank 1 :post-affiliated 1454 :mode nil :granularity nil :parent #80) #("Now create a folder from which will host the following dockerfile. You\ncan name this file Dockerfile. Note that mariadb is the base image\nsince it already has mariadb installed for us.\n" 0 185 (:parent #88))) (src-block (:language "conf" :switches nil :parameters nil :begin 1640 :end 1847 :number-lines nil :preserve-indent nil :retain-labels t :use-labels t :label-fmt nil :value "FROM mariadb:latest\n\nCOPY ./gn2.tar.gz /tmp/gn2.tar.gz\nRUN tar -xzf /tmp/gn2.tar.gz -C / && rm -f /tmp/gn2.tar.gz && \\\n mkdir -p /usr/local/mysql /genotype_files/genotype/json\n" :post-blank 1 :post-affiliated 1640 :mode nil :granularity nil :parent #80)) (paragraph (:begin 1847 :end 1895 :contents-begin 1847 :contents-end 1894 :post-blank 1 :post-affiliated 1847 :mode nil :granularity nil :parent #80) #("Build the image(Note the fullstop at the end):\n" 0 47 (:parent #90))) (fixed-width (:begin 1895 :end 1955 :value "sudo docker build -t genenetwork2:latest -f Dockerfile ." :post-blank 2 :post-affiliated 1895 :mode nil :granularity nil :parent #80)) (paragraph (:begin 1955 :end 2009 :contents-begin 1955 :contents-end 2008 :post-blank 1 :post-affiliated 1955 :mode nil :granularity nil :parent #80) #("To load the image interactively you've just created:\n" 0 53 (:parent #92))) (fixed-width (:begin 2009 :end 2054 :value "docker run -ti \"genenetwork2:latest\" bash" :post-blank 2 :post-affiliated 2009 :mode nil :granularity nil :parent #80)) (paragraph (:begin 2054 :end 2141 :contents-begin 2054 :contents-end 2140 :post-blank 1 :post-affiliated 2054 :mode nil :granularity nil :parent #80) #("Assuming you have a docker instance running, you could always run\ncommands in it e.g:\n" 0 86 (:parent #94))) (fixed-width (:begin 2141 :end 2193 :value "docker run \"genenetwork2:latest\" python --version" :post-blank 1 :post-affiliated 2141 :mode nil :granularity nil :parent #80)))) (headline (:raw-value "Pushing to DockerHub" :begin 2194 :end 2817 :pre-blank 1 :contents-begin 2218 :contents-end 2817 :robust-begin 2220 :robust-end 2815 :level 1 :priority nil :tags nil :todo-keyword nil :todo-type nil :post-blank 0 :footnote-section-p nil :archivedp nil :commentedp nil :post-affiliated 2194 :title (#("Pushing to DockerHub" 0 20 (:parent #78))) :mode nil :granularity nil :parent #71) (section (:begin 2218 :end 2817 :contents-begin 2218 :contents-end 2817 :robust-begin 2218 :robust-end 2815 :post-blank 0 :post-affiliated 2218 :mode section :granularity nil :parent #78) (paragraph (:begin 2218 :end 2325 :contents-begin 2218 :contents-end 2324 :post-blank 1 :post-affiliated 2218 :mode planning :granularity nil :parent #81) #("We use DockerHub to store the docker images from which we use on our\nCI environment using Github Actions.\n" 0 106 (:parent #84))) (paragraph (:begin 2325 :end 2447 :contents-begin 2325 :contents-end 2446 :post-blank 1 :post-affiliated 2325 :mode nil :granularity nil :parent #81) #("To push to dockerhub, first get the image name by running " 0 58 (:parent #85)) (verbatim (:begin 2383 :end 2398 :post-blank 0 :value "docker\nimages" :parent #85)) #(". Push to dockerhub using a command similar to:\n" 0 48 (:parent #85))) (fixed-width (:begin 2447 :end 2494 :value "docker push bonfacekilz/genenetwork2:latest" :post-blank 2 :post-affiliated 2447 :mode nil :granularity nil :parent #81)) (paragraph (:begin 2494 :end 2537 :contents-begin 2494 :contents-end 2536 :post-blank 1 :post-affiliated 2494 :mode nil :granularity nil :parent #81) #("Right now, we have 2 images on DockerHub:\n" 0 42 (:parent #87))) (plain-list (:type unordered :begin 2537 :end 2817 :contents-begin 2537 :contents-end 2817 :structure ((2537 0 "- " nil nil nil 2701) (2701 0 "- " nil nil nil 2817)) :post-blank 0 :post-affiliated 2537 :mode nil :granularity nil :parent #81) (item (:bullet "- " :begin 2537 :end 2701 :contents-begin 2539 :contents-end 2701 :checkbox nil :counter nil :structure ((2537 0 "- " nil nil nil 2701) (2701 0 "- " nil nil nil 2817)) :pre-blank 0 :post-blank 0 :post-affiliated 2537 :tag nil :mode item :granularity nil :parent #88) (paragraph (:begin 2539 :end 2701 :contents-begin 2539 :contents-end 2701 :post-blank 0 :post-affiliated 2539 :mode nil :granularity nil :parent #91) (link (:type "https" :path "//hub.docker.com/repository/docker/bonfacekilz/python2-genenetwork2" :format plain :raw-link "https://hub.docker.com/repository/docker/bonfacekilz/python2-genenetwork2" :application nil :search-option nil :begin 2539 :end 2612 :contents-begin nil :contents-end nil :post-blank 0 :parent #94)) #(":\n Contains the python2 version of gn2. Don't use this. Please use the\n python3 image!\n" 0 89 (:parent #94)))) (item (:bullet "- " :begin 2701 :end 2817 :contents-begin 2703 :contents-end 2817 :checkbox nil :counter nil :structure ((2537 0 "- " nil nil nil 2701) (2701 0 "- " nil nil nil 2817)) :pre-blank 0 :post-blank 0 :post-affiliated 2701 :tag nil :mode item :granularity nil :parent #88) (paragraph (:begin 2703 :end 2817 :contents-begin 2703 :contents-end 2817 :post-blank 0 :post-affiliated 2703 :mode nil :granularity nil :parent #92) (link (:type "https" :path "//hub.docker.com/repository/docker/bonfacekilz/python3-genenetwork2" :format plain :raw-link "https://hub.docker.com/repository/docker/bonfacekilz/python3-genenetwork2" :application nil :search-option nil :begin 2703 :end 2776 :contents-begin nil :contents-end nil :post-blank 0 :parent #95)) #(":\n Contains the python3 version of gn2.\n" 0 41 (:parent #95))))))))) . #0)) (plain-list (:type unordered :begin 113 :end 259 :contents-begin 113 :contents-end 259 :structure ((113 0 "- " nil nil nil 147) (147 0 "- " nil nil nil 209) (209 0 "- " nil nil nil 259)) :post-blank 0 :post-affiliated 113 :mode planning :granularity nil :parent #1) (item (:bullet "- " :begin 113 :end 147 :contents-begin 115 :contents-end 147 :checkbox nil :counter nil :structure ((113 0 "- " nil nil nil 147) (147 0 "- " nil nil nil 209) (209 0 "- " nil nil nil 259)) :pre-blank 0 :post-blank 0 :post-affiliated 113 :tag nil :mode item :granularity nil :parent #4) (paragraph (:begin 115 :end 147 :contents-begin 115 :contents-end 147 :post-blank 0 :post-affiliated 115 :mode nil :granularity nil :parent #7) (link (:type "custom-id" :path "introduction" :format bracket :raw-link "#introduction" :application nil :search-option nil :begin 115 :end 146 :contents-begin 132 :contents-end 144 :post-blank 0 :parent #10) #("Introduction" 0 12 (:parent #13))) #("\n" 0 1 (:parent #10)))) (item (:bullet "- " :begin 147 :end 209 :contents-begin 149 :contents-end 209 :checkbox nil :counter nil :structure ((113 0 "- " nil nil nil 147) (147 0 "- " nil nil nil 209) (209 0 "- " nil nil nil 259)) :pre-blank 0 :post-blank 0 :post-affiliated 147 :tag nil :mode item :granularity nil :parent #4) (paragraph (:begin 149 :end 209 :contents-begin 149 :contents-end 209 :post-blank 0 :post-affiliated 149 :mode nil :granularity nil :parent #8) (link (:type "custom-id" :path "creating-the-docker-images" :format bracket :raw-link "#creating-the-docker-images" :application nil :search-option nil :begin 149 :end 208 :contents-begin 180 :contents-end 206 :post-blank 0 :parent #11) #("Creating the Docker Images" 0 26 (:parent #14))) #("\n" 0 1 (:parent #11)))) (item (:bullet "- " :begin 209 :end 259 :contents-begin 211 :contents-end 259 :checkbox nil :counter nil :structure ((113 0 "- " nil nil nil 147) (147 0 "- " nil nil nil 209) (209 0 "- " nil nil nil 259)) :pre-blank 0 :post-blank 0 :post-affiliated 209 :tag nil :mode item :granularity nil :parent #4) (paragraph (:begin 211 :end 259 :contents-begin 211 :contents-end 259 :post-blank 0 :post-affiliated 211 :mode nil :granularity nil :parent #9) (link (:type "custom-id" :path "pushing-to-dockerhub" :format bracket :raw-link "#pushing-to-dockerhub" :application nil :search-option nil :begin 211 :end 258 :contents-begin 236 :contents-end 256 :post-blank 0 :parent #12) #("Pushing to DockerHub" 0 20 (:parent #15))) #("\n" 0 1 (:parent #12))))))) "") org-export-data((headline (:raw-value "Table of Contents" :begin 35 :end 260 :pre-blank 0 :contents-begin 113 :contents-end 259 :robust-begin 115 :robust-end 257 :level 1 :priority nil :tags ("TOC") :todo-keyword nil :todo-type nil :post-blank 1 :footnote-section-p nil :archivedp nil :commentedp nil :post-affiliated 35 :title (#("Table of Contents" 0 17 (:parent #0))) :mode nil :granularity nil :parent (org-data (:begin 1 :contents-begin 1 :contents-end 2817 :end 2817 :robust-begin 3 :robust-end 2815 :post-blank 0 :post-affiliated 1 :path nil :mode org-data :CATEGORY nil :granularity nil) (section (:begin 1 :end 35 :contents-begin 1 :contents-end 34 :robust-begin 1 :robust-end 32 :post-blank 1 :post-affiliated 1 :mode first-section :granularity nil :parent #46) (keyword (:key "TITLE" :value "Genenetwork2 Dockerized" :begin 1 :end 34 :post-blank 0 :post-affiliated 1 :mode top-comment :granularity nil :parent #49))) #0 (headline (:raw-value "Introduction" :begin 260 :end 926 :pre-blank 1 :contents-begin 276 :contents-end 925 :robust-begin 278 :robust-end 923 :level 1 :priority nil :tags nil :todo-keyword nil :todo-type nil :post-blank 1 :footnote-section-p nil :archivedp nil :commentedp nil :post-affiliated 260 :title (#("Introduction" 0 12 (:parent #51))) :mode nil :granularity nil :parent #46) (section (:begin 276 :end 926 :contents-begin 276 :contents-end 925 :robust-begin 276 :robust-end 923 :post-blank 1 :post-affiliated 276 :mode section :granularity nil :parent #51) (paragraph (:begin 276 :end 600 :contents-begin 276 :contents-end 599 :post-blank 1 :post-affiliated 276 :mode planning :granularity nil :parent #54) #("The CI(Continuous Integration) system for Genenetwork2 uses " 0 60 (:parent #57)) (link (:type "https" :path "//github.com/features/actions" :format bracket :raw-link "https://github.com/features/actions" :application nil :search-option nil :begin 336 :end 391 :contents-begin 375 :contents-end 389 :post-blank 0 :parent #57) #("Github\nActions" 0 14 (:parent #61))) #(". As such, it's important to have a way to run tests using\nfacilities provided by GUIX in a reproducible way. This project\nleverages GUIX to generate a docker container from which the unittests\nare ran from.\n" 0 208 (:parent #57))) (paragraph (:begin 600 :end 830 :contents-begin 600 :contents-end 829 :post-blank 1 :post-affiliated 600 :mode nil :granularity nil :parent #54) #("Find instructions on how to set docker up inside GUIX " 0 54 (:parent #58)) (link (:type "https" :path "//github.com/pjotrp/guix-notes/blob/master/CONTAINERS.org#run-docker" :format bracket :raw-link "https://github.com/pjotrp/guix-notes/blob/master/CONTAINERS.org#run-docker" :application nil :search-option nil :begin 654 :end 738 :contents-begin 732 :contents-end 736 :post-blank 0 :parent #58) #("here" 0 4 (:parent #62))) #(". This\ndocument will not get into that. It's assumed that you have a working\ndocker setup.\n" 0 91 (:parent #58))) (paragraph (:begin 830 :end 925 :contents-begin 830 :contents-end 925 :post-blank 0 :post-affiliated 830 :mode nil :granularity nil :parent #54) #("The rest of this document outlines how the docker container used in\nthe CI builds was created.\n" 0 95 (:parent #59))))) (headline (:raw-value "Creating the Docker Images" :begin 926 :end 2194 :pre-blank 1 :contents-begin 956 :contents-end 2193 :robust-begin 958 :robust-end 2191 :level 1 :priority nil :tags nil :todo-keyword nil :todo-type nil :post-blank 1 :footnote-section-p nil :archivedp nil :commentedp nil :post-affiliated 926 :title (#("Creating the Docker Images" 0 26 (:parent #52))) :mode nil :granularity nil :parent #46) (section (:begin 956 :end 2194 :contents-begin 956 :contents-end 2193 :robust-begin 956 :robust-end 2191 :post-blank 1 :post-affiliated 956 :mode section :granularity nil :parent #52) (paragraph (:begin 956 :end 1071 :contents-begin 956 :contents-end 1070 :post-blank 1 :post-affiliated 956 :mode planning :granularity nil :parent #55) #("The general idea is that GUIX is used to generate a set of binaries,\nwhich will be added to a base mariaDB image.\n" 0 114 (:parent #58))) (paragraph (:begin 1071 :end 1117 :contents-begin 1071 :contents-end 1116 :post-blank 1 :post-affiliated 1071 :mode nil :granularity nil :parent #55) #("First create the gn2 tar archive by running:\n" 0 45 (:parent #59))) (src-block (:language "sh" :switches nil :parameters nil :begin 1117 :end 1343 :number-lines nil :preserve-indent nil :retain-labels t :use-labels t :label-fmt nil :value "env GUIX_PACKAGE_PATH=\"/home/bonface/projects/guix-bioinformatics:/home/bonface/projects/guix-past/modules\" \\\n ./pre-inst-env guix pack --no-grafts\\\n -S /gn2-profile=/ \\\n screen genenetwork2\n" :post-blank 1 :post-affiliated 1117 :mode nil :granularity nil :parent #55)) (paragraph (:begin 1343 :end 1387 :contents-begin 1343 :contents-end 1386 :post-blank 1 :post-affiliated 1343 :mode nil :granularity nil :parent #55) #("The output will look something similar to:\n" 0 43 (:parent #61))) (fixed-width (:begin 1387 :end 1454 :value "/gnu/store/x3m77vwaqcwba24p5s4lrb7w2ii16lj9-tarball-pack.tar.gz" :post-blank 2 :post-affiliated 1387 :mode nil :granularity nil :parent #55)) (paragraph (:begin 1454 :end 1640 :contents-begin 1454 :contents-end 1639 :post-blank 1 :post-affiliated 1454 :mode nil :granularity nil :parent #55) #("Now create a folder from which will host the following dockerfile. You\ncan name this file Dockerfile. Note that mariadb is the base image\nsince it already has mariadb installed for us.\n" 0 185 (:parent #63))) (src-block (:language "conf" :switches nil :parameters nil :begin 1640 :end 1847 :number-lines nil :preserve-indent nil :retain-labels t :use-labels t :label-fmt nil :value "FROM mariadb:latest\n\nCOPY ./gn2.tar.gz /tmp/gn2.tar.gz\nRUN tar -xzf /tmp/gn2.tar.gz -C / && rm -f /tmp/gn2.tar.gz && \\\n mkdir -p /usr/local/mysql /genotype_files/genotype/json\n" :post-blank 1 :post-affiliated 1640 :mode nil :granularity nil :parent #55)) (paragraph (:begin 1847 :end 1895 :contents-begin 1847 :contents-end 1894 :post-blank 1 :post-affiliated 1847 :mode nil :granularity nil :parent #55) #("Build the image(Note the fullstop at the end):\n" 0 47 (:parent #65))) (fixed-width (:begin 1895 :end 1955 :value "sudo docker build -t genenetwork2:latest -f Dockerfile ." :post-blank 2 :post-affiliated 1895 :mode nil :granularity nil :parent #55)) (paragraph (:begin 1955 :end 2009 :contents-begin 1955 :contents-end 2008 :post-blank 1 :post-affiliated 1955 :mode nil :granularity nil :parent #55) #("To load the image interactively you've just created:\n" 0 53 (:parent #67))) (fixed-width (:begin 2009 :end 2054 :value "docker run -ti \"genenetwork2:latest\" bash" :post-blank 2 :post-affiliated 2009 :mode nil :granularity nil :parent #55)) (paragraph (:begin 2054 :end 2141 :contents-begin 2054 :contents-end 2140 :post-blank 1 :post-affiliated 2054 :mode nil :granularity nil :parent #55) #("Assuming you have a docker instance running, you could always run\ncommands in it e.g:\n" 0 86 (:parent #69))) (fixed-width (:begin 2141 :end 2193 :value "docker run \"genenetwork2:latest\" python --version" :post-blank 1 :post-affiliated 2141 :mode nil :granularity nil :parent #55)))) (headline (:raw-value "Pushing to DockerHub" :begin 2194 :end 2817 :pre-blank 1 :contents-begin 2218 :contents-end 2817 :robust-begin 2220 :robust-end 2815 :level 1 :priority nil :tags nil :todo-keyword nil :todo-type nil :post-blank 0 :footnote-section-p nil :archivedp nil :commentedp nil :post-affiliated 2194 :title (#("Pushing to DockerHub" 0 20 (:parent #53))) :mode nil :granularity nil :parent #46) (section (:begin 2218 :end 2817 :contents-begin 2218 :contents-end 2817 :robust-begin 2218 :robust-end 2815 :post-blank 0 :post-affiliated 2218 :mode section :granularity nil :parent #53) (paragraph (:begin 2218 :end 2325 :contents-begin 2218 :contents-end 2324 :post-blank 1 :post-affiliated 2218 :mode planning :granularity nil :parent #56) #("We use DockerHub to store the docker images from which we use on our\nCI environment using Github Actions.\n" 0 106 (:parent #59))) (paragraph (:begin 2325 :end 2447 :contents-begin 2325 :contents-end 2446 :post-blank 1 :post-affiliated 2325 :mode nil :granularity nil :parent #56) #("To push to dockerhub, first get the image name by running " 0 58 (:parent #60)) (verbatim (:begin 2383 :end 2398 :post-blank 0 :value "docker\nimages" :parent #60)) #(". Push to dockerhub using a command similar to:\n" 0 48 (:parent #60))) (fixed-width (:begin 2447 :end 2494 :value "docker push bonfacekilz/genenetwork2:latest" :post-blank 2 :post-affiliated 2447 :mode nil :granularity nil :parent #56)) (paragraph (:begin 2494 :end 2537 :contents-begin 2494 :contents-end 2536 :post-blank 1 :post-affiliated 2494 :mode nil :granularity nil :parent #56) #("Right now, we have 2 images on DockerHub:\n" 0 42 (:parent #62))) (plain-list (:type unordered :begin 2537 :end 2817 :contents-begin 2537 :contents-end 2817 :structure ((2537 0 "- " nil nil nil 2701) (2701 0 "- " nil nil nil 2817)) :post-blank 0 :post-affiliated 2537 :mode nil :granularity nil :parent #56) (item (:bullet "- " :begin 2537 :end 2701 :contents-begin 2539 :contents-end 2701 :checkbox nil :counter nil :structure ((2537 0 "- " nil nil nil 2701) (2701 0 "- " nil nil nil 2817)) :pre-blank 0 :post-blank 0 :post-affiliated 2537 :tag nil :mode item :granularity nil :parent #63) (paragraph (:begin 2539 :end 2701 :contents-begin 2539 :contents-end 2701 :post-blank 0 :post-affiliated 2539 :mode nil :granularity nil :parent #66) (link (:type "https" :path "//hub.docker.com/repository/docker/bonfacekilz/python2-genenetwork2" :format plain :raw-link "https://hub.docker.com/repository/docker/bonfacekilz/python2-genenetwork2" :application nil :search-option nil :begin 2539 :end 2612 :contents-begin nil :contents-end nil :post-blank 0 :parent #69)) #(":\n Contains the python2 version of gn2. Don't use this. Please use the\n python3 image!\n" 0 89 (:parent #69)))) (item (:bullet "- " :begin 2701 :end 2817 :contents-begin 2703 :contents-end 2817 :checkbox nil :counter nil :structure ((2537 0 "- " nil nil nil 2701) (2701 0 "- " nil nil nil 2817)) :pre-blank 0 :post-blank 0 :post-affiliated 2701 :tag nil :mode item :granularity nil :parent #63) (paragraph (:begin 2703 :end 2817 :contents-begin 2703 :contents-end 2817 :post-blank 0 :post-affiliated 2703 :mode nil :granularity nil :parent #67) (link (:type "https" :path "//hub.docker.com/repository/docker/bonfacekilz/python3-genenetwork2" :format plain :raw-link "https://hub.docker.com/repository/docker/bonfacekilz/python3-genenetwork2" :application nil :search-option nil :begin 2703 :end 2776 :contents-begin nil :contents-end nil :post-blank 0 :parent #70)) #(":\n Contains the python3 version of gn2.\n" 0 41 (:parent #70))))))))) (section (:begin 113 :end 260 :contents-begin 113 :contents-end 259 :robust-begin 113 :robust-end 257 :post-blank 1 :post-affiliated 113 :mode section :granularity nil :parent #0) (plain-list (:type unordered :begin 113 :end 259 :contents-begin 113 :contents-end 259 :structure ((113 0 "- " nil nil nil 147) (147 0 "- " nil nil nil 209) (209 0 "- " nil nil nil 259)) :post-blank 0 :post-affiliated 113 :mode planning :granularity nil :parent #3) (item (:bullet "- " :begin 113 :end 147 :contents-begin 115 :contents-end 147 :checkbox nil :counter nil :structure ((113 0 "- " nil nil nil 147) (147 0 "- " nil nil nil 209) (209 0 "- " nil nil nil 259)) :pre-blank 0 :post-blank 0 :post-affiliated 113 :tag nil :mode item :granularity nil :parent #6) (paragraph (:begin 115 :end 147 :contents-begin 115 :contents-end 147 :post-blank 0 :post-affiliated 115 :mode nil :granularity nil :parent #9) (link (:type "custom-id" :path "introduction" :format bracket :raw-link "#introduction" :application nil :search-option nil :begin 115 :end 146 :contents-begin 132 :contents-end 144 :post-blank 0 :parent #12) #("Introduction" 0 12 (:parent #15))) #("\n" 0 1 (:parent #12)))) (item (:bullet "- " :begin 147 :end 209 :contents-begin 149 :contents-end 209 :checkbox nil :counter nil :structure ((113 0 "- " nil nil nil 147) (147 0 "- " nil nil nil 209) (209 0 "- " nil nil nil 259)) :pre-blank 0 :post-blank 0 :post-affiliated 147 :tag nil :mode item :granularity nil :parent #6) (paragraph (:begin 149 :end 209 :contents-begin 149 :contents-end 209 :post-blank 0 :post-affiliated 149 :mode nil :granularity nil :parent #10) (link (:type "custom-id" :path "creating-the-docker-images" :format bracket :raw-link "#creating-the-docker-images" :application nil :search-option nil :begin 149 :end 208 :contents-begin 180 :contents-end 206 :post-blank 0 :parent #13) #("Creating the Docker Images" 0 26 (:parent #16))) #("\n" 0 1 (:parent #13)))) (item (:bullet "- " :begin 209 :end 259 :contents-begin 211 :contents-end 259 :checkbox nil :counter nil :structure ((113 0 "- " nil nil nil 147) (147 0 "- " nil nil nil 209) (209 0 "- " nil nil nil 259)) :pre-blank 0 :post-blank 0 :post-affiliated 209 :tag nil :mode item :granularity nil :parent #6) (paragraph (:begin 211 :end 259 :contents-begin 211 :contents-end 259 :post-blank 0 :post-affiliated 211 :mode nil :granularity nil :parent #11) (link (:type "custom-id" :path "pushing-to-dockerhub" :format bracket :raw-link "#pushing-to-dockerhub" :application nil :search-option nil :begin 211 :end 258 :contents-begin 236 :contents-end 256 :post-blank 0 :parent #14) #("Pushing to DockerHub" 0 20 (:parent #17))) #("\n" 0 1 (:parent #14))))))) (:export-options (body-only) :back-end #s(org-export-backend :name html :parent nil :transcoders ((bold . org-html-bold) (center-block . org-html-center-block) (clock . org-html-clock) (code . org-html-code) (drawer . org-html-drawer) (dynamic-block . org-html-dynamic-block) (entity . org-html-entity) (example-block . org-html-example-block) (export-block . org-html-export-block) (export-snippet . org-html-export-snippet) (fixed-width . org-html-fixed-width) (footnote-reference . org-html-footnote-reference) (headline . org-html-headline) (horizontal-rule . org-html-horizontal-rule) (inline-src-block . org-html-inline-src-block) (inlinetask . org-html-inlinetask) (inner-template . org-html-inner-template) (italic . org-html-italic) (item . org-html-item) (keyword . org-html-keyword) (latex-environment . org-html-latex-environment) (latex-fragment . org-html-latex-fragment) (line-break . org-html-line-break) (link . org-html-link) (node-property . org-html-node-property) (paragraph . org-html-paragraph) (plain-list . org-html-plain-list) (plain-text . org-html-plain-text) (planning . org-html-planning) (property-drawer . org-html-property-drawer) (quote-block . org-html-quote-block) (radio-target . org-html-radio-target) (section . org-html-section) (special-block . org-html-special-block) (src-block . org-html-src-block) (statistics-cookie . org-html-statistics-cookie) (strike-through . org-html-strike-through) (subscript . org-html-subscript) (superscript . org-html-superscript) (table . org-html-table) (table-cell . org-html-table-cell) (table-row . org-html-table-row) (target . org-html-target) (template . org-html-template) (timestamp . org-html-timestamp) (underline . org-html-underline) (verbatim . org-html-verbatim) (verse-block . org-html-verse-block)) :options ((:html-doctype "HTML_DOCTYPE" nil org-html-doctype) (:html-container "HTML_CONTAINER" nil org-html-container-element) (:html-content-class "HTML_CONTENT_CLASS" nil org-html-content-class) (:description "DESCRIPTION" nil nil newline) (:keywords "KEYWORDS" nil nil space) (:html-html5-fancy nil "html5-fancy" org-html-html5-fancy) (:html-link-use-abs-url nil "html-link-use-abs-url" org-html-link-use-abs-url) (:html-link-home "HTML_LINK_HOME" nil org-html-link-home) (:html-link-up "HTML_LINK_UP" nil org-html-link-up) (:html-mathjax "HTML_MATHJAX" nil "" space) (:html-equation-reference-format "HTML_EQUATION_REFERENCE_FORMAT" nil org-html-equation-reference-format t) (:html-postamble nil "html-postamble" org-html-postamble) (:html-preamble nil "html-preamble" org-html-preamble) (:html-head "HTML_HEAD" nil org-html-head newline) (:html-head-extra "HTML_HEAD_EXTRA" nil org-html-head-extra newline) (:subtitle "SUBTITLE" nil nil parse) (:html-head-include-default-style nil "html-style" org-html-head-include-default-style) (:html-head-include-scripts nil "html-scripts" org-html-head-include-scripts) (:html-allow-name-attribute-in-anchors nil nil org-html-allow-name-attribute-in-anchors) (:html-divs nil nil org-html-divs) (:html-checkbox-type nil nil org-html-checkbox-type) (:html-extension nil nil org-html-extension) (:html-footnote-format nil nil org-html-footnote-format) (:html-footnote-separator nil nil org-html-footnote-separator) (:html-footnotes-section nil nil org-html-footnotes-section) (:html-format-drawer-function nil nil org-html-format-drawer-function) (:html-format-headline-function nil nil org-html-format-headline-function) (:html-format-inlinetask-function nil nil org-html-format-inlinetask-function) (:html-home/up-format nil nil org-html-home/up-format) (:html-indent nil nil org-html-indent) (:html-infojs-options nil nil org-html-infojs-options) (:html-infojs-template nil nil org-html-infojs-template) (:html-inline-image-rules nil nil org-html-inline-image-rules) (:html-link-org-files-as-html nil nil org-html-link-org-files-as-html) (:html-mathjax-options nil nil org-html-mathjax-options) (:html-mathjax-template nil nil org-html-mathjax-template) (:html-metadata-timestamp-format nil nil org-html-metadata-timestamp-format) (:html-postamble-format nil nil org-html-postamble-format) (:html-preamble-format nil nil org-html-preamble-format) (:html-prefer-user-labels nil nil org-html-prefer-user-labels) (:html-self-link-headlines nil nil org-html-self-link-headlines) (:html-table-align-individual-fields nil nil org-html-table-align-individual-fields) (:html-table-caption-above nil nil org-html-table-caption-above) (:html-table-data-tags nil nil org-html-table-data-tags) (:html-table-header-tags nil nil org-html-table-header-tags) (:html-table-use-header-tags-for-first-column nil nil org-html-table-use-header-tags-for-first-column) (:html-tag-class-prefix nil nil org-html-tag-class-prefix) (:html-text-markup-alist nil nil org-html-text-markup-alist) (:html-todo-kwd-class-prefix nil nil org-html-todo-kwd-class-prefix) (:html-toplevel-hlevel nil nil org-html-toplevel-hlevel) (:html-use-infojs nil nil org-html-use-infojs) (:html-validation-link nil nil org-html-validation-link) (:html-viewport nil nil org-html-viewport) (:html-inline-images nil nil org-html-inline-images) (:html-table-attributes nil nil org-html-table-default-attributes) (:html-table-row-open-tag nil nil org-html-table-row-open-tag) (:html-table-row-close-tag nil nil org-html-table-row-close-tag) (:html-xml-declaration nil nil org-html-xml-declaration) (:html-wrap-src-lines nil nil org-html-wrap-src-lines) (:html-klipsify-src nil nil org-html-klipsify-src) (:html-klipse-css nil nil org-html-klipse-css) (:html-klipse-js nil nil org-html-klipse-js) (:html-klipse-selection-script nil nil org-html-klipse-selection-script) (:infojs-opt "INFOJS_OPT" nil nil) (:creator "CREATOR" nil org-html-creator-string) (:with-latex nil "tex" org-html-with-latex) (:latex-header "LATEX_HEADER" nil nil newline)) :filters ((:filter-options . org-html-infojs-install-script) (:filter-parse-tree . org-html-image-link-filter) (:filter-final-output . org-html-final-function)) :blocks nil :menu (104 "Export to HTML" ((72 "As HTML buffer" org-html-export-as-html) (104 "As HTML file" org-html-export-to-html) (111 "As HTML file and open" (lambda (a s v b) (if a (org-html-export-to-html t s v b) (org-open-file (org-html-export-to-html nil s v b)))))))) :translate-alist ((bold . org-html-bold) (center-block . org-html-center-block) (clock . org-html-clock) (code . org-html-code) (drawer . org-html-drawer) (dynamic-block . org-html-dynamic-block) (entity . org-html-entity) (example-block . org-html-example-block) (export-block . org-html-export-block) (export-snippet . org-html-export-snippet) (fixed-width . org-html-fixed-width) (footnote-reference . org-html-footnote-reference) (headline . org-html-headline) (horizontal-rule . org-html-horizontal-rule) (inline-src-block . org-html-inline-src-block) (inlinetask . org-html-inlinetask) (inner-template . org-html-inner-template) (italic . org-html-italic) (item . org-html-item) (keyword . org-html-keyword) (latex-environment . org-html-latex-environment) (latex-fragment . org-html-latex-fragment) (line-break . org-html-line-break) (link . org-html-link) (node-property . org-html-node-property) (paragraph . org-html-paragraph) (plain-list . org-html-plain-list) (plain-text . org-html-plain-text) (planning . org-html-planning) (property-drawer . org-html-property-drawer) (quote-block . org-html-quote-block) (radio-target . org-html-radio-target) (section . org-html-section) (special-block . org-html-special-block) (src-block . org-html-src-block) (statistics-cookie . org-html-statistics-cookie) (strike-through . org-html-strike-through) (subscript . org-html-subscript) (superscript . org-html-superscript) (table . org-html-table) (table-cell . org-html-table-cell) (table-row . org-html-table-row) (target . org-html-target) (template . org-html-template) (timestamp . org-html-timestamp) (underline . org-html-underline) (verbatim . org-html-verbatim) (verse-block . org-html-verse-block)) :exported-data # :input-buffer " *temp*" :input-file nil :html-doctype "xhtml-strict" :html-container "div" :html-content-class "content" :description nil :keywords nil :html-html5-fancy nil :html-link-use-abs-url nil :html-link-home "" :html-link-up "" :html-mathjax "" :html-equation-reference-format "\\eqref{%s}" :html-postamble auto :html-preamble t :html-head "" :html-head-extra "" :subtitle nil :html-head-include-default-style t :html-head-include-scripts nil :html-allow-name-attribute-in-anchors nil :html-divs ((preamble "div" "preamble") (content "div" "content") (postamble "div" "postamble")) :html-checkbox-type ascii :html-extension "html" :html-footnote-format "%s" :html-footnote-separator ", " :html-footnotes-section "
\n

%s:

\n
\n%s\n
\n
" :html-format-drawer-function #f(compiled-function (name contents) #) :html-format-headline-function org-html-format-headline-default-function :html-format-inlinetask-function org-html-format-inlinetask-default-function :html-home/up-format "
\n UP \n |\n HOME \n
" :html-indent nil :html-infojs-options ((path . "https://orgmode.org/org-info.js") (view . "info") (toc . :with-toc) (ftoc . "0") (tdepth . "max") (sdepth . "max") (mouse . "underline") (buttons . "0") (ltoc . "1") (up . :html-link-up) (home . :html-link-home)) :html-infojs-template "\n\n" :html-inline-image-rules (("file" . "\\(?:\\.\\(?:gif\\|jp\\(?:e?g\\)\\|png\\|svg\\|webp\\)\\)") ("http" . "\\(?:\\.\\(?:gif\\|jp\\(?:e?g\\)\\|png\\|svg\\|webp\\)\\)") ("https" . "\\(?:\\.\\(?:gif\\|jp\\(?:e?g\\)\\|png\\|svg\\|webp\\)\\)")) :html-link-org-files-as-html t :html-mathjax-options ((path "https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-mml-chtml.js") (scale 1.0) (align "center") (font "mathjax-modern") (overflow "overflow") (tags "ams") (indent "0em") (multlinewidth "85%") (tagindent ".8em") (tagside "right")) :html-mathjax-template "\n\n\n" :html-metadata-timestamp-format "%Y-%m-%d %a %H:%M" :html-postamble-format (("en" "

Author: %a (%e)

\n

Date: %d

\n

%c

\n

%v

")) :html-preamble-format (("en" "")) :html-prefer-user-labels nil :html-self-link-headlines nil :html-table-align-individual-fields t :html-table-caption-above t :html-table-data-tags ("" . "") :html-table-header-tags ("" . "") :html-table-use-header-tags-for-first-column nil :html-tag-class-prefix "" :html-text-markup-alist ((bold . "%s") (code . "%s") (italic . "%s") (strike-through . "%s") (underline . "%s") (verbatim . "%s")) :html-todo-kwd-class-prefix "" :html-toplevel-hlevel 2 :html-use-infojs when-configured :html-validation-link "Validate" :html-viewport ((width "device-width") (initial-scale "1") (minimum-scale "") (maximum-scale "") (user-scalable "")) :html-inline-images t :html-table-attributes (:border "2" :cellspacing "0" :cellpadding "6" :rules "groups" :frame "hsides") :html-table-row-open-tag "" :html-table-row-close-tag "" :html-xml-declaration (("html" . "") ("php" . "\"; ?>")) :html-wrap-src-lines nil :html-klipsify-src nil :html-klipse-css "https://storage.googleapis.com/app.klipse.tech/css/codemirror.css" :html-klipse-js "https://storage.googleapis.com/app.klipse.tech/plugin_prod/js/klipse_plugin.min.js" :html-klipse-selection-script "window.klipse_settings = {selector_eval_html: '.src-html',\n selector_eval_js: '.src-js',\n selector_eval_python_client: '.src-python',\n selector_eval_scheme: '.src-scheme',\n selector: '.src-clojure',\n selector_eval_ruby: '.src-ruby'};" :infojs-opt nil :creator "Emacs 29.4 (Org mode 9.6.15)" :with-latex t :latex-header nil :title (#("Genenetwork2 Dockerized" 0 23 (:parent #148))) :date nil :author (#("unknown" 0 7 (:parent #152))) :email "unknown@genenetwork-development" :language "en" :select-tags ("export") :exclude-tags ("noexport") :headline-levels 3 :preserve-breaks nil :section-numbers nil :time-stamp-file t :with-archived-trees headline :with-author t :with-broken-links nil :with-clocks nil :with-creator nil :with-date t :with-drawers (not "LOGBOOK") :with-email nil :with-emphasize t :with-entities t :with-fixed-width t :with-footnotes t :with-inlinetasks t :with-planning nil :with-priority nil :with-properties nil :with-smart-quotes nil :with-special-strings t :with-statistics-cookies t :with-sub-superscript t :with-toc nil :with-tables t :with-tags t :with-tasks t :with-timestamps t :with-title t :with-todo-keywords t :cite-export (basic nil nil) :bibliography nil :filter-body nil :filter-bold nil :filter-babel-call nil :filter-center-block nil :filter-clock nil :filter-code nil :filter-diary-sexp nil :filter-drawer nil :filter-dynamic-block nil :filter-entity nil :filter-example-block nil :filter-export-block nil :filter-export-snippet nil :filter-final-output (org-html-final-function) :filter-fixed-width nil :filter-footnote-definition nil :filter-footnote-reference nil :filter-headline nil :filter-horizontal-rule nil :filter-inline-babel-call nil :filter-inline-src-block nil :filter-inlinetask nil :filter-italic nil :filter-item nil :filter-keyword nil :filter-latex-environment nil :filter-latex-fragment nil :filter-line-break nil :filter-link nil :filter-node-property nil :filter-options (org-html-infojs-install-script) :filter-paragraph nil :filter-parse-tree (org-html-image-link-filter) :filter-plain-list nil :filter-plain-text nil :filter-planning nil :filter-property-drawer nil :filter-quote-block nil :filter-radio-target nil :filter-section nil :filter-special-block nil :filter-src-block nil :filter-statistics-cookie nil :filter-strike-through nil :filter-subscript nil :filter-superscript nil :filter-table nil :filter-table-cell nil :filter-table-row nil :filter-target nil :filter-timestamp nil :filter-underline nil :filter-verbatim nil :filter-verse-block nil :ignore-list nil :parse-tree (org-data (:begin 1 :contents-begin 1 :contents-end 2817 :end 2817 :robust-begin 3 :robust-end 2815 :post-blank 0 :post-affiliated 1 :path nil :mode org-data :CATEGORY nil :granularity nil) (section (:begin 1 :end 35 :contents-begin 1 :contents-end 34 :robust-begin 1 :robust-end 32 :post-blank 1 :post-affiliated 1 :mode first-section :granularity nil :parent #338) (keyword (:key "TITLE" :value "Genenetwork2 Dockerized" :begin 1 :end 34 :post-blank 0 :post-affiliated 1 :mode top-comment :granularity nil :parent #341))) (headline (:raw-value "Table of Contents" :begin 35 :end 260 :pre-blank 0 :contents-begin 113 :contents-end 259 :robust-begin 115 :robust-end 257 :level 1 :priority nil :tags ("TOC") :todo-keyword nil :todo-type nil :post-blank 1 :footnote-section-p nil :archivedp nil :commentedp nil :post-affiliated 35 :title (#("Table of Contents" 0 17 (:parent #342))) :mode nil :granularity nil :parent #338) (section (:begin 113 :end 260 :contents-begin 113 :contents-end 259 :robust-begin 113 :robust-end 257 :post-blank 1 :post-affiliated 113 :mode section :granularity nil :parent #342) (plain-list (:type unordered :begin 113 :end 259 :contents-begin 113 :contents-end 259 :structure ((113 0 "- " nil nil nil 147) (147 0 "- " nil nil nil 209) (209 0 "- " nil nil nil 259)) :post-blank 0 :post-affiliated 113 :mode planning :granularity nil :parent #345) (item (:bullet "- " :begin 113 :end 147 :contents-begin 115 :contents-end 147 :checkbox nil :counter nil :structure ((113 0 "- " nil nil nil 147) (147 0 "- " nil nil nil 209) (209 0 "- " nil nil nil 259)) :pre-blank 0 :post-blank 0 :post-affiliated 113 :tag nil :mode item :granularity nil :parent #348) (paragraph (:begin 115 :end 147 :contents-begin 115 :contents-end 147 :post-blank 0 :post-affiliated 115 :mode nil :granularity nil :parent #351) (link (:type "custom-id" :path "introduction" :format bracket :raw-link "#introduction" :application nil :search-option nil :begin 115 :end 146 :contents-begin 132 :contents-end 144 :post-blank 0 :parent #354) #("Introduction" 0 12 (:parent #357))) #("\n" 0 1 (:parent #354)))) (item (:bullet "- " :begin 147 :end 209 :contents-begin 149 :contents-end 209 :checkbox nil :counter nil :structure ((113 0 "- " nil nil nil 147) (147 0 "- " nil nil nil 209) (209 0 "- " nil nil nil 259)) :pre-blank 0 :post-blank 0 :post-affiliated 147 :tag nil :mode item :granularity nil :parent #348) (paragraph (:begin 149 :end 209 :contents-begin 149 :contents-end 209 :post-blank 0 :post-affiliated 149 :mode nil :granularity nil :parent #352) (link (:type "custom-id" :path "creating-the-docker-images" :format bracket :raw-link "#creating-the-docker-images" :application nil :search-option nil :begin 149 :end 208 :contents-begin 180 :contents-end 206 :post-blank 0 :parent #355) #("Creating the Docker Images" 0 26 (:parent #358))) #("\n" 0 1 (:parent #355)))) (item (:bullet "- " :begin 209 :end 259 :contents-begin 211 :contents-end 259 :checkbox nil :counter nil :structure ((113 0 "- " nil nil nil 147) (147 0 "- " nil nil nil 209) (209 0 "- " nil nil nil 259)) :pre-blank 0 :post-blank 0 :post-affiliated 209 :tag nil :mode item :granularity nil :parent #348) (paragraph (:begin 211 :end 259 :contents-begin 211 :contents-end 259 :post-blank 0 :post-affiliated 211 :mode nil :granularity nil :parent #353) (link (:type "custom-id" :path "pushing-to-dockerhub" :format bracket :raw-link "#pushing-to-dockerhub" :application nil :search-option nil :begin 211 :end 258 :contents-begin 236 :contents-end 256 :post-blank 0 :parent #356) #("Pushing to DockerHub" 0 20 (:parent #359))) #("\n" 0 1 (:parent #356))))))) (headline (:raw-value "Introduction" :begin 260 :end 926 :pre-blank 1 :contents-begin 276 :contents-end 925 :robust-begin 278 :robust-end 923 :level 1 :priority nil :tags nil :todo-keyword nil :todo-type nil :post-blank 1 :footnote-section-p nil :archivedp nil :commentedp nil :post-affiliated 260 :title (#("Introduction" 0 12 (:parent #343))) :mode nil :granularity nil :parent #338) (section (:begin 276 :end 926 :contents-begin 276 :contents-end 925 :robust-begin 276 :robust-end 923 :post-blank 1 :post-affiliated 276 :mode section :granularity nil :parent #343) (paragraph (:begin 276 :end 600 :contents-begin 276 :contents-end 599 :post-blank 1 :post-affiliated 276 :mode planning :granularity nil :parent #346) #("The CI(Continuous Integration) system for Genenetwork2 uses " 0 60 (:parent #349)) (link (:type "https" :path "//github.com/features/actions" :format bracket :raw-link "https://github.com/features/actions" :application nil :search-option nil :begin 336 :end 391 :contents-begin 375 :contents-end 389 :post-blank 0 :parent #349) #("Github\nActions" 0 14 (:parent #353))) #(". As such, it's important to have a way to run tests using\nfacilities provided by GUIX in a reproducible way. This project\nleverages GUIX to generate a docker container from which the unittests\nare ran from.\n" 0 208 (:parent #349))) (paragraph (:begin 600 :end 830 :contents-begin 600 :contents-end 829 :post-blank 1 :post-affiliated 600 :mode nil :granularity nil :parent #346) #("Find instructions on how to set docker up inside GUIX " 0 54 (:parent #350)) (link (:type "https" :path "//github.com/pjotrp/guix-notes/blob/master/CONTAINERS.org#run-docker" :format bracket :raw-link "https://github.com/pjotrp/guix-notes/blob/master/CONTAINERS.org#run-docker" :application nil :search-option nil :begin 654 :end 738 :contents-begin 732 :contents-end 736 :post-blank 0 :parent #350) #("here" 0 4 (:parent #354))) #(". This\ndocument will not get into that. It's assumed that you have a working\ndocker setup.\n" 0 91 (:parent #350))) (paragraph (:begin 830 :end 925 :contents-begin 830 :contents-end 925 :post-blank 0 :post-affiliated 830 :mode nil :granularity nil :parent #346) #("The rest of this document outlines how the docker container used in\nthe CI builds was created.\n" 0 95 (:parent #351))))) (headline (:raw-value "Creating the Docker Images" :begin 926 :end 2194 :pre-blank 1 :contents-begin 956 :contents-end 2193 :robust-begin 958 :robust-end 2191 :level 1 :priority nil :tags nil :todo-keyword nil :todo-type nil :post-blank 1 :footnote-section-p nil :archivedp nil :commentedp nil :post-affiliated 926 :title (#("Creating the Docker Images" 0 26 (:parent #344))) :mode nil :granularity nil :parent #338) (section (:begin 956 :end 2194 :contents-begin 956 :contents-end 2193 :robust-begin 956 :robust-end 2191 :post-blank 1 :post-affiliated 956 :mode section :granularity nil :parent #344) (paragraph (:begin 956 :end 1071 :contents-begin 956 :contents-end 1070 :post-blank 1 :post-affiliated 956 :mode planning :granularity nil :parent #347) #("The general idea is that GUIX is used to generate a set of binaries,\nwhich will be added to a base mariaDB image.\n" 0 114 (:parent #350))) (paragraph (:begin 1071 :end 1117 :contents-begin 1071 :contents-end 1116 :post-blank 1 :post-affiliated 1071 :mode nil :granularity nil :parent #347) #("First create the gn2 tar archive by running:\n" 0 45 (:parent #351))) (src-block (:language "sh" :switches nil :parameters nil :begin 1117 :end 1343 :number-lines nil :preserve-indent nil :retain-labels t :use-labels t :label-fmt nil :value "env GUIX_PACKAGE_PATH=\"/home/bonface/projects/guix-bioinformatics:/home/bonface/projects/guix-past/modules\" \\\n ./pre-inst-env guix pack --no-grafts\\\n -S /gn2-profile=/ \\\n screen genenetwork2\n" :post-blank 1 :post-affiliated 1117 :mode nil :granularity nil :parent #347)) (paragraph (:begin 1343 :end 1387 :contents-begin 1343 :contents-end 1386 :post-blank 1 :post-affiliated 1343 :mode nil :granularity nil :parent #347) #("The output will look something similar to:\n" 0 43 (:parent #353))) (fixed-width (:begin 1387 :end 1454 :value "/gnu/store/x3m77vwaqcwba24p5s4lrb7w2ii16lj9-tarball-pack.tar.gz" :post-blank 2 :post-affiliated 1387 :mode nil :granularity nil :parent #347)) (paragraph (:begin 1454 :end 1640 :contents-begin 1454 :contents-end 1639 :post-blank 1 :post-affiliated 1454 :mode nil :granularity nil :parent #347) #("Now create a folder from which will host the following dockerfile. You\ncan name this file Dockerfile. Note that mariadb is the base image\nsince it already has mariadb installed for us.\n" 0 185 (:parent #355))) (src-block (:language "conf" :switches nil :parameters nil :begin 1640 :end 1847 :number-lines nil :preserve-indent nil :retain-labels t :use-labels t :label-fmt nil :value "FROM mariadb:latest\n\nCOPY ./gn2.tar.gz /tmp/gn2.tar.gz\nRUN tar -xzf /tmp/gn2.tar.gz -C / && rm -f /tmp/gn2.tar.gz && \\\n mkdir -p /usr/local/mysql /genotype_files/genotype/json\n" :post-blank 1 :post-affiliated 1640 :mode nil :granularity nil :parent #347)) (paragraph (:begin 1847 :end 1895 :contents-begin 1847 :contents-end 1894 :post-blank 1 :post-affiliated 1847 :mode nil :granularity nil :parent #347) #("Build the image(Note the fullstop at the end):\n" 0 47 (:parent #357))) (fixed-width (:begin 1895 :end 1955 :value "sudo docker build -t genenetwork2:latest -f Dockerfile ." :post-blank 2 :post-affiliated 1895 :mode nil :granularity nil :parent #347)) (paragraph (:begin 1955 :end 2009 :contents-begin 1955 :contents-end 2008 :post-blank 1 :post-affiliated 1955 :mode nil :granularity nil :parent #347) #("To load the image interactively you've just created:\n" 0 53 (:parent #359))) (fixed-width (:begin 2009 :end 2054 :value "docker run -ti \"genenetwork2:latest\" bash" :post-blank 2 :post-affiliated 2009 :mode nil :granularity nil :parent #347)) (paragraph (:begin 2054 :end 2141 :contents-begin 2054 :contents-end 2140 :post-blank 1 :post-affiliated 2054 :mode nil :granularity nil :parent #347) #("Assuming you have a docker instance running, you could always run\ncommands in it e.g:\n" 0 86 (:parent #361))) (fixed-width (:begin 2141 :end 2193 :value "docker run \"genenetwork2:latest\" python --version" :post-blank 1 :post-affiliated 2141 :mode nil :granularity nil :parent #347)))) (headline (:raw-value "Pushing to DockerHub" :begin 2194 :end 2817 :pre-blank 1 :contents-begin 2218 :contents-end 2817 :robust-begin 2220 :robust-end 2815 :level 1 :priority nil :tags nil :todo-keyword nil :todo-type nil :post-blank 0 :footnote-section-p nil :archivedp nil :commentedp nil :post-affiliated 2194 :title (#("Pushing to DockerHub" 0 20 (:parent #345))) :mode nil :granularity nil :parent #338) (section (:begin 2218 :end 2817 :contents-begin 2218 :contents-end 2817 :robust-begin 2218 :robust-end 2815 :post-blank 0 :post-affiliated 2218 :mode section :granularity nil :parent #345) (paragraph (:begin 2218 :end 2325 :contents-begin 2218 :contents-end 2324 :post-blank 1 :post-affiliated 2218 :mode planning :granularity nil :parent #348) #("We use DockerHub to store the docker images from which we use on our\nCI environment using Github Actions.\n" 0 106 (:parent #351))) (paragraph (:begin 2325 :end 2447 :contents-begin 2325 :contents-end 2446 :post-blank 1 :post-affiliated 2325 :mode nil :granularity nil :parent #348) #("To push to dockerhub, first get the image name by running " 0 58 (:parent #352)) (verbatim (:begin 2383 :end 2398 :post-blank 0 :value "docker\nimages" :parent #352)) #(". Push to dockerhub using a command similar to:\n" 0 48 (:parent #352))) (fixed-width (:begin 2447 :end 2494 :value "docker push bonfacekilz/genenetwork2:latest" :post-blank 2 :post-affiliated 2447 :mode nil :granularity nil :parent #348)) (paragraph (:begin 2494 :end 2537 :contents-begin 2494 :contents-end 2536 :post-blank 1 :post-affiliated 2494 :mode nil :granularity nil :parent #348) #("Right now, we have 2 images on DockerHub:\n" 0 42 (:parent #354))) (plain-list (:type unordered :begin 2537 :end 2817 :contents-begin 2537 :contents-end 2817 :structure ((2537 0 "- " nil nil nil 2701) (2701 0 "- " nil nil nil 2817)) :post-blank 0 :post-affiliated 2537 :mode nil :granularity nil :parent #348) (item (:bullet "- " :begin 2537 :end 2701 :contents-begin 2539 :contents-end 2701 :checkbox nil :counter nil :structure ((2537 0 "- " nil nil nil 2701) (2701 0 "- " nil nil nil 2817)) :pre-blank 0 :post-blank 0 :post-affiliated 2537 :tag nil :mode item :granularity nil :parent #355) (paragraph (:begin 2539 :end 2701 :contents-begin 2539 :contents-end 2701 :post-blank 0 :post-affiliated 2539 :mode nil :granularity nil :parent #358) (link (:type "https" :path "//hub.docker.com/repository/docker/bonfacekilz/python2-genenetwork2" :format plain :raw-link "https://hub.docker.com/repository/docker/bonfacekilz/python2-genenetwork2" :application nil :search-option nil :begin 2539 :end 2612 :contents-begin nil :contents-end nil :post-blank 0 :parent #361)) #(":\n Contains the python2 version of gn2. Don't use this. Please use the\n python3 image!\n" 0 89 (:parent #361)))) (item (:bullet "- " :begin 2701 :end 2817 :contents-begin 2703 :contents-end 2817 :checkbox nil :counter nil :structure ((2537 0 "- " nil nil nil 2701) (2701 0 "- " nil nil nil 2817)) :pre-blank 0 :post-blank 0 :post-affiliated 2701 :tag nil :mode item :granularity nil :parent #355) (paragraph (:begin 2703 :end 2817 :contents-begin 2703 :contents-end 2817 :post-blank 0 :post-affiliated 2703 :mode nil :granularity nil :parent #359) (link (:type "https" :path "//hub.docker.com/repository/docker/bonfacekilz/python3-genenetwork2" :format plain :raw-link "https://hub.docker.com/repository/docker/bonfacekilz/python3-genenetwork2" :application nil :search-option nil :begin 2703 :end 2776 :contents-begin nil :contents-end nil :post-blank 0 :parent #362)) #(":\n Contains the python3 version of gn2.\n" 0 41 (:parent #362)))))))) :headline-offset 0 :headline-numbering nil :id-alist nil :citations nil :id-local-cache #)) #f(compiled-function (element) #)((headline (:raw-value "Table of Contents" :begin 35 :end 260 :pre-blank 0 :contents-begin 113 :contents-end 259 :robust-begin 115 :robust-end 257 :level 1 :priority nil :tags ("TOC") :todo-keyword nil :todo-type nil :post-blank 1 :footnote-section-p nil :archivedp nil :commentedp nil :post-affiliated 35 :title (#("Table of Contents" 0 17 (:parent #0))) :mode nil :granularity nil :parent (org-data (:begin 1 :contents-begin 1 :contents-end 2817 :end 2817 :robust-begin 3 :robust-end 2815 :post-blank 0 :post-affiliated 1 :path nil :mode org-data :CATEGORY nil :granularity nil) (section (:begin 1 :end 35 :contents-begin 1 :contents-end 34 :robust-begin 1 :robust-end 32 :post-blank 1 :post-affiliated 1 :mode first-section :granularity nil :parent #46) (keyword (:key "TITLE" :value "Genenetwork2 Dockerized" :begin 1 :end 34 :post-blank 0 :post-affiliated 1 :mode top-comment :granularity nil :parent #49))) #0 (headline (:raw-value "Introduction" :begin 260 :end 926 :pre-blank 1 :contents-begin 276 :contents-end 925 :robust-begin 278 :robust-end 923 :level 1 :priority nil :tags nil :todo-keyword nil :todo-type nil :post-blank 1 :footnote-section-p nil :archivedp nil :commentedp nil :post-affiliated 260 :title (#("Introduction" 0 12 (:parent #51))) :mode nil :granularity nil :parent #46) (section (:begin 276 :end 926 :contents-begin 276 :contents-end 925 :robust-begin 276 :robust-end 923 :post-blank 1 :post-affiliated 276 :mode section :granularity nil :parent #51) (paragraph (:begin 276 :end 600 :contents-begin 276 :contents-end 599 :post-blank 1 :post-affiliated 276 :mode planning :granularity nil :parent #54) #("The CI(Continuous Integration) system for Genenetwork2 uses " 0 60 (:parent #57)) (link (:type "https" :path "//github.com/features/actions" :format bracket :raw-link "https://github.com/features/actions" :application nil :search-option nil :begin 336 :end 391 :contents-begin 375 :contents-end 389 :post-blank 0 :parent #57) #("Github\nActions" 0 14 (:parent #61))) #(". As such, it's important to have a way to run tests using\nfacilities provided by GUIX in a reproducible way. This project\nleverages GUIX to generate a docker container from which the unittests\nare ran from.\n" 0 208 (:parent #57))) (paragraph (:begin 600 :end 830 :contents-begin 600 :contents-end 829 :post-blank 1 :post-affiliated 600 :mode nil :granularity nil :parent #54) #("Find instructions on how to set docker up inside GUIX " 0 54 (:parent #58)) (link (:type "https" :path "//github.com/pjotrp/guix-notes/blob/master/CONTAINERS.org#run-docker" :format bracket :raw-link "https://github.com/pjotrp/guix-notes/blob/master/CONTAINERS.org#run-docker" :application nil :search-option nil :begin 654 :end 738 :contents-begin 732 :contents-end 736 :post-blank 0 :parent #58) #("here" 0 4 (:parent #62))) #(". This\ndocument will not get into that. It's assumed that you have a working\ndocker setup.\n" 0 91 (:parent #58))) (paragraph (:begin 830 :end 925 :contents-begin 830 :contents-end 925 :post-blank 0 :post-affiliated 830 :mode nil :granularity nil :parent #54) #("The rest of this document outlines how the docker container used in\nthe CI builds was created.\n" 0 95 (:parent #59))))) (headline (:raw-value "Creating the Docker Images" :begin 926 :end 2194 :pre-blank 1 :contents-begin 956 :contents-end 2193 :robust-begin 958 :robust-end 2191 :level 1 :priority nil :tags nil :todo-keyword nil :todo-type nil :post-blank 1 :footnote-section-p nil :archivedp nil :commentedp nil :post-affiliated 926 :title (#("Creating the Docker Images" 0 26 (:parent #52))) :mode nil :granularity nil :parent #46) (section (:begin 956 :end 2194 :contents-begin 956 :contents-end 2193 :robust-begin 956 :robust-end 2191 :post-blank 1 :post-affiliated 956 :mode section :granularity nil :parent #52) (paragraph (:begin 956 :end 1071 :contents-begin 956 :contents-end 1070 :post-blank 1 :post-affiliated 956 :mode planning :granularity nil :parent #55) #("The general idea is that GUIX is used to generate a set of binaries,\nwhich will be added to a base mariaDB image.\n" 0 114 (:parent #58))) (paragraph (:begin 1071 :end 1117 :contents-begin 1071 :contents-end 1116 :post-blank 1 :post-affiliated 1071 :mode nil :granularity nil :parent #55) #("First create the gn2 tar archive by running:\n" 0 45 (:parent #59))) (src-block (:language "sh" :switches nil :parameters nil :begin 1117 :end 1343 :number-lines nil :preserve-indent nil :retain-labels t :use-labels t :label-fmt nil :value "env GUIX_PACKAGE_PATH=\"/home/bonface/projects/guix-bioinformatics:/home/bonface/projects/guix-past/modules\" \\\n ./pre-inst-env guix pack --no-grafts\\\n -S /gn2-profile=/ \\\n screen genenetwork2\n" :post-blank 1 :post-affiliated 1117 :mode nil :granularity nil :parent #55)) (paragraph (:begin 1343 :end 1387 :contents-begin 1343 :contents-end 1386 :post-blank 1 :post-affiliated 1343 :mode nil :granularity nil :parent #55) #("The output will look something similar to:\n" 0 43 (:parent #61))) (fixed-width (:begin 1387 :end 1454 :value "/gnu/store/x3m77vwaqcwba24p5s4lrb7w2ii16lj9-tarball-pack.tar.gz" :post-blank 2 :post-affiliated 1387 :mode nil :granularity nil :parent #55)) (paragraph (:begin 1454 :end 1640 :contents-begin 1454 :contents-end 1639 :post-blank 1 :post-affiliated 1454 :mode nil :granularity nil :parent #55) #("Now create a folder from which will host the following dockerfile. You\ncan name this file Dockerfile. Note that mariadb is the base image\nsince it already has mariadb installed for us.\n" 0 185 (:parent #63))) (src-block (:language "conf" :switches nil :parameters nil :begin 1640 :end 1847 :number-lines nil :preserve-indent nil :retain-labels t :use-labels t :label-fmt nil :value "FROM mariadb:latest\n\nCOPY ./gn2.tar.gz /tmp/gn2.tar.gz\nRUN tar -xzf /tmp/gn2.tar.gz -C / && rm -f /tmp/gn2.tar.gz && \\\n mkdir -p /usr/local/mysql /genotype_files/genotype/json\n" :post-blank 1 :post-affiliated 1640 :mode nil :granularity nil :parent #55)) (paragraph (:begin 1847 :end 1895 :contents-begin 1847 :contents-end 1894 :post-blank 1 :post-affiliated 1847 :mode nil :granularity nil :parent #55) #("Build the image(Note the fullstop at the end):\n" 0 47 (:parent #65))) (fixed-width (:begin 1895 :end 1955 :value "sudo docker build -t genenetwork2:latest -f Dockerfile ." :post-blank 2 :post-affiliated 1895 :mode nil :granularity nil :parent #55)) (paragraph (:begin 1955 :end 2009 :contents-begin 1955 :contents-end 2008 :post-blank 1 :post-affiliated 1955 :mode nil :granularity nil :parent #55) #("To load the image interactively you've just created:\n" 0 53 (:parent #67))) (fixed-width (:begin 2009 :end 2054 :value "docker run -ti \"genenetwork2:latest\" bash" :post-blank 2 :post-affiliated 2009 :mode nil :granularity nil :parent #55)) (paragraph (:begin 2054 :end 2141 :contents-begin 2054 :contents-end 2140 :post-blank 1 :post-affiliated 2054 :mode nil :granularity nil :parent #55) #("Assuming you have a docker instance running, you could always run\ncommands in it e.g:\n" 0 86 (:parent #69))) (fixed-width (:begin 2141 :end 2193 :value "docker run \"genenetwork2:latest\" python --version" :post-blank 1 :post-affiliated 2141 :mode nil :granularity nil :parent #55)))) (headline (:raw-value "Pushing to DockerHub" :begin 2194 :end 2817 :pre-blank 1 :contents-begin 2218 :contents-end 2817 :robust-begin 2220 :robust-end 2815 :level 1 :priority nil :tags nil :todo-keyword nil :todo-type nil :post-blank 0 :footnote-section-p nil :archivedp nil :commentedp nil :post-affiliated 2194 :title (#("Pushing to DockerHub" 0 20 (:parent #53))) :mode nil :granularity nil :parent #46) (section (:begin 2218 :end 2817 :contents-begin 2218 :contents-end 2817 :robust-begin 2218 :robust-end 2815 :post-blank 0 :post-affiliated 2218 :mode section :granularity nil :parent #53) (paragraph (:begin 2218 :end 2325 :contents-begin 2218 :contents-end 2324 :post-blank 1 :post-affiliated 2218 :mode planning :granularity nil :parent #56) #("We use DockerHub to store the docker images from which we use on our\nCI environment using Github Actions.\n" 0 106 (:parent #59))) (paragraph (:begin 2325 :end 2447 :contents-begin 2325 :contents-end 2446 :post-blank 1 :post-affiliated 2325 :mode nil :granularity nil :parent #56) #("To push to dockerhub, first get the image name by running " 0 58 (:parent #60)) (verbatim (:begin 2383 :end 2398 :post-blank 0 :value "docker\nimages" :parent #60)) #(". Push to dockerhub using a command similar to:\n" 0 48 (:parent #60))) (fixed-width (:begin 2447 :end 2494 :value "docker push bonfacekilz/genenetwork2:latest" :post-blank 2 :post-affiliated 2447 :mode nil :granularity nil :parent #56)) (paragraph (:begin 2494 :end 2537 :contents-begin 2494 :contents-end 2536 :post-blank 1 :post-affiliated 2494 :mode nil :granularity nil :parent #56) #("Right now, we have 2 images on DockerHub:\n" 0 42 (:parent #62))) (plain-list (:type unordered :begin 2537 :end 2817 :contents-begin 2537 :contents-end 2817 :structure ((2537 0 "- " nil nil nil 2701) (2701 0 "- " nil nil nil 2817)) :post-blank 0 :post-affiliated 2537 :mode nil :granularity nil :parent #56) (item (:bullet "- " :begin 2537 :end 2701 :contents-begin 2539 :contents-end 2701 :checkbox nil :counter nil :structure ((2537 0 "- " nil nil nil 2701) (2701 0 "- " nil nil nil 2817)) :pre-blank 0 :post-blank 0 :post-affiliated 2537 :tag nil :mode item :granularity nil :parent #63) (paragraph (:begin 2539 :end 2701 :contents-begin 2539 :contents-end 2701 :post-blank 0 :post-affiliated 2539 :mode nil :granularity nil :parent #66) (link (:type "https" :path "//hub.docker.com/repository/docker/bonfacekilz/python2-genenetwork2" :format plain :raw-link "https://hub.docker.com/repository/docker/bonfacekilz/python2-genenetwork2" :application nil :search-option nil :begin 2539 :end 2612 :contents-begin nil :contents-end nil :post-blank 0 :parent #69)) #(":\n Contains the python2 version of gn2. Don't use this. Please use the\n python3 image!\n" 0 89 (:parent #69)))) (item (:bullet "- " :begin 2701 :end 2817 :contents-begin 2703 :contents-end 2817 :checkbox nil :counter nil :structure ((2537 0 "- " nil nil nil 2701) (2701 0 "- " nil nil nil 2817)) :pre-blank 0 :post-blank 0 :post-affiliated 2701 :tag nil :mode item :granularity nil :parent #63) (paragraph (:begin 2703 :end 2817 :contents-begin 2703 :contents-end 2817 :post-blank 0 :post-affiliated 2703 :mode nil :granularity nil :parent #67) (link (:type "https" :path "//hub.docker.com/repository/docker/bonfacekilz/python3-genenetwork2" :format plain :raw-link "https://hub.docker.com/repository/docker/bonfacekilz/python3-genenetwork2" :application nil :search-option nil :begin 2703 :end 2776 :contents-begin nil :contents-end nil :post-blank 0 :parent #70)) #(":\n Contains the python3 version of gn2.\n" 0 41 (:parent #70))))))))) (section (:begin 113 :end 260 :contents-begin 113 :contents-end 259 :robust-begin 113 :robust-end 257 :post-blank 1 :post-affiliated 113 :mode section :granularity nil :parent #0) (plain-list (:type unordered :begin 113 :end 259 :contents-begin 113 :contents-end 259 :structure ((113 0 "- " nil nil nil 147) (147 0 "- " nil nil nil 209) (209 0 "- " nil nil nil 259)) :post-blank 0 :post-affiliated 113 :mode planning :granularity nil :parent #3) (item (:bullet "- " :begin 113 :end 147 :contents-begin 115 :contents-end 147 :checkbox nil :counter nil :structure ((113 0 "- " nil nil nil 147) (147 0 "- " nil nil nil 209) (209 0 "- " nil nil nil 259)) :pre-blank 0 :post-blank 0 :post-affiliated 113 :tag nil :mode item :granularity nil :parent #6) (paragraph (:begin 115 :end 147 :contents-begin 115 :contents-end 147 :post-blank 0 :post-affiliated 115 :mode nil :granularity nil :parent #9) (link (:type "custom-id" :path "introduction" :format bracket :raw-link "#introduction" :application nil :search-option nil :begin 115 :end 146 :contents-begin 132 :contents-end 144 :post-blank 0 :parent #12) #("Introduction" 0 12 (:parent #15))) #("\n" 0 1 (:parent #12)))) (item (:bullet "- " :begin 147 :end 209 :contents-begin 149 :contents-end 209 :checkbox nil :counter nil :structure ((113 0 "- " nil nil nil 147) (147 0 "- " nil nil nil 209) (209 0 "- " nil nil nil 259)) :pre-blank 0 :post-blank 0 :post-affiliated 147 :tag nil :mode item :granularity nil :parent #6) (paragraph (:begin 149 :end 209 :contents-begin 149 :contents-end 209 :post-blank 0 :post-affiliated 149 :mode nil :granularity nil :parent #10) (link (:type "custom-id" :path "creating-the-docker-images" :format bracket :raw-link "#creating-the-docker-images" :application nil :search-option nil :begin 149 :end 208 :contents-begin 180 :contents-end 206 :post-blank 0 :parent #13) #("Creating the Docker Images" 0 26 (:parent #16))) #("\n" 0 1 (:parent #13)))) (item (:bullet "- " :begin 209 :end 259 :contents-begin 211 :contents-end 259 :checkbox nil :counter nil :structure ((113 0 "- " nil nil nil 147) (147 0 "- " nil nil nil 209) (209 0 "- " nil nil nil 259)) :pre-blank 0 :post-blank 0 :post-affiliated 209 :tag nil :mode item :granularity nil :parent #6) (paragraph (:begin 211 :end 259 :contents-begin 211 :contents-end 259 :post-blank 0 :post-affiliated 211 :mode nil :granularity nil :parent #11) (link (:type "custom-id" :path "pushing-to-dockerhub" :format bracket :raw-link "#pushing-to-dockerhub" :application nil :search-option nil :begin 211 :end 258 :contents-begin 236 :contents-end 256 :post-blank 0 :parent #14) #("Pushing to DockerHub" 0 20 (:parent #17))) #("\n" 0 1 (:parent #14)))))))) mapconcat(#f(compiled-function (element) #) ((section (:begin 1 :end 35 :contents-begin 1 :contents-end 34 :robust-begin 1 :robust-end 32 :post-blank 1 :post-affiliated 1 :mode first-section :granularity nil :parent (org-data (:begin 1 :contents-begin 1 :contents-end 2817 :end 2817 :robust-begin 3 :robust-end 2815 :post-blank 0 :post-affiliated 1 :path nil :mode org-data :CATEGORY nil :granularity nil) . #0)) (keyword (:key "TITLE" :value "Genenetwork2 Dockerized" :begin 1 :end 34 :post-blank 0 :post-affiliated 1 :mode top-comment :granularity nil :parent #1))) (headline (:raw-value "Table of Contents" :begin 35 :end 260 :pre-blank 0 :contents-begin 113 :contents-end 259 :robust-begin 115 :robust-end 257 :level 1 :priority nil :tags ("TOC") :todo-keyword nil :todo-type nil :post-blank 1 :footnote-section-p nil :archivedp nil :commentedp nil :post-affiliated 35 :title (#("Table of Contents" 0 17 (:parent #2))) :mode nil :granularity nil :parent (org-data (:begin 1 :contents-begin 1 :contents-end 2817 :end 2817 :robust-begin 3 :robust-end 2815 :post-blank 0 :post-affiliated 1 :path nil :mode org-data :CATEGORY nil :granularity nil) . #0)) (section (:begin 113 :end 260 :contents-begin 113 :contents-end 259 :robust-begin 113 :robust-end 257 :post-blank 1 :post-affiliated 113 :mode section :granularity nil :parent #2) (plain-list (:type unordered :begin 113 :end 259 :contents-begin 113 :contents-end 259 :structure ((113 0 "- " nil nil nil 147) (147 0 "- " nil nil nil 209) (209 0 "- " nil nil nil 259)) :post-blank 0 :post-affiliated 113 :mode planning :granularity nil :parent #5) (item (:bullet "- " :begin 113 :end 147 :contents-begin 115 :contents-end 147 :checkbox nil :counter nil :structure ((113 0 "- " nil nil nil 147) (147 0 "- " nil nil nil 209) (209 0 "- " nil nil nil 259)) :pre-blank 0 :post-blank 0 :post-affiliated 113 :tag nil :mode item :granularity nil :parent #8) (paragraph (:begin 115 :end 147 :contents-begin 115 :contents-end 147 :post-blank 0 :post-affiliated 115 :mode nil :granularity nil :parent #11) (link (:type "custom-id" :path "introduction" :format bracket :raw-link "#introduction" :application nil :search-option nil :begin 115 :end 146 :contents-begin 132 :contents-end 144 :post-blank 0 :parent #14) #("Introduction" 0 12 (:parent #17))) #("\n" 0 1 (:parent #14)))) (item (:bullet "- " :begin 147 :end 209 :contents-begin 149 :contents-end 209 :checkbox nil :counter nil :structure ((113 0 "- " nil nil nil 147) (147 0 "- " nil nil nil 209) (209 0 "- " nil nil nil 259)) :pre-blank 0 :post-blank 0 :post-affiliated 147 :tag nil :mode item :granularity nil :parent #8) (paragraph (:begin 149 :end 209 :contents-begin 149 :contents-end 209 :post-blank 0 :post-affiliated 149 :mode nil :granularity nil :parent #12) (link (:type "custom-id" :path "creating-the-docker-images" :format bracket :raw-link "#creating-the-docker-images" :application nil :search-option nil :begin 149 :end 208 :contents-begin 180 :contents-end 206 :post-blank 0 :parent #15) #("Creating the Docker Images" 0 26 (:parent #18))) #("\n" 0 1 (:parent #15)))) (item (:bullet "- " :begin 209 :end 259 :contents-begin 211 :contents-end 259 :checkbox nil :counter nil :structure ((113 0 "- " nil nil nil 147) (147 0 "- " nil nil nil 209) (209 0 "- " nil nil nil 259)) :pre-blank 0 :post-blank 0 :post-affiliated 209 :tag nil :mode item :granularity nil :parent #8) (paragraph (:begin 211 :end 259 :contents-begin 211 :contents-end 259 :post-blank 0 :post-affiliated 211 :mode nil :granularity nil :parent #13) (link (:type "custom-id" :path "pushing-to-dockerhub" :format bracket :raw-link "#pushing-to-dockerhub" :application nil :search-option nil :begin 211 :end 258 :contents-begin 236 :contents-end 256 :post-blank 0 :parent #16) #("Pushing to DockerHub" 0 20 (:parent #19))) #("\n" 0 1 (:parent #16))))))) (headline (:raw-value "Introduction" :begin 260 :end 926 :pre-blank 1 :contents-begin 276 :contents-end 925 :robust-begin 278 :robust-end 923 :level 1 :priority nil :tags nil :todo-keyword nil :todo-type nil :post-blank 1 :footnote-section-p nil :archivedp nil :commentedp nil :post-affiliated 260 :title (#("Introduction" 0 12 (:parent #3))) :mode nil :granularity nil :parent (org-data (:begin 1 :contents-begin 1 :contents-end 2817 :end 2817 :robust-begin 3 :robust-end 2815 :post-blank 0 :post-affiliated 1 :path nil :mode org-data :CATEGORY nil :granularity nil) . #0)) (section (:begin 276 :end 926 :contents-begin 276 :contents-end 925 :robust-begin 276 :robust-end 923 :post-blank 1 :post-affiliated 276 :mode section :granularity nil :parent #3) (paragraph (:begin 276 :end 600 :contents-begin 276 :contents-end 599 :post-blank 1 :post-affiliated 276 :mode planning :granularity nil :parent #6) #("The CI(Continuous Integration) system for Genenetwork2 uses " 0 60 (:parent #9)) (link (:type "https" :path "//github.com/features/actions" :format bracket :raw-link "https://github.com/features/actions" :application nil :search-option nil :begin 336 :end 391 :contents-begin 375 :contents-end 389 :post-blank 0 :parent #9) #("Github\nActions" 0 14 (:parent #13))) #(". As such, it's important to have a way to run tests using\nfacilities provided by GUIX in a reproducible way. This project\nleverages GUIX to generate a docker container from which the unittests\nare ran from.\n" 0 208 (:parent #9))) (paragraph (:begin 600 :end 830 :contents-begin 600 :contents-end 829 :post-blank 1 :post-affiliated 600 :mode nil :granularity nil :parent #6) #("Find instructions on how to set docker up inside GUIX " 0 54 (:parent #10)) (link (:type "https" :path "//github.com/pjotrp/guix-notes/blob/master/CONTAINERS.org#run-docker" :format bracket :raw-link "https://github.com/pjotrp/guix-notes/blob/master/CONTAINERS.org#run-docker" :application nil :search-option nil :begin 654 :end 738 :contents-begin 732 :contents-end 736 :post-blank 0 :parent #10) #("here" 0 4 (:parent #14))) #(". This\ndocument will not get into that. It's assumed that you have a working\ndocker setup.\n" 0 91 (:parent #10))) (paragraph (:begin 830 :end 925 :contents-begin 830 :contents-end 925 :post-blank 0 :post-affiliated 830 :mode nil :granularity nil :parent #6) #("The rest of this document outlines how the docker container used in\nthe CI builds was created.\n" 0 95 (:parent #11))))) (headline (:raw-value "Creating the Docker Images" :begin 926 :end 2194 :pre-blank 1 :contents-begin 956 :contents-end 2193 :robust-begin 958 :robust-end 2191 :level 1 :priority nil :tags nil :todo-keyword nil :todo-type nil :post-blank 1 :footnote-section-p nil :archivedp nil :commentedp nil :post-affiliated 926 :title (#("Creating the Docker Images" 0 26 (:parent #4))) :mode nil :granularity nil :parent (org-data (:begin 1 :contents-begin 1 :contents-end 2817 :end 2817 :robust-begin 3 :robust-end 2815 :post-blank 0 :post-affiliated 1 :path nil :mode org-data :CATEGORY nil :granularity nil) . #0)) (section (:begin 956 :end 2194 :contents-begin 956 :contents-end 2193 :robust-begin 956 :robust-end 2191 :post-blank 1 :post-affiliated 956 :mode section :granularity nil :parent #4) (paragraph (:begin 956 :end 1071 :contents-begin 956 :contents-end 1070 :post-blank 1 :post-affiliated 956 :mode planning :granularity nil :parent #7) #("The general idea is that GUIX is used to generate a set of binaries,\nwhich will be added to a base mariaDB image.\n" 0 114 (:parent #10))) (paragraph (:begin 1071 :end 1117 :contents-begin 1071 :contents-end 1116 :post-blank 1 :post-affiliated 1071 :mode nil :granularity nil :parent #7) #("First create the gn2 tar archive by running:\n" 0 45 (:parent #11))) (src-block (:language "sh" :switches nil :parameters nil :begin 1117 :end 1343 :number-lines nil :preserve-indent nil :retain-labels t :use-labels t :label-fmt nil :value "env GUIX_PACKAGE_PATH=\"/home/bonface/projects/guix-bioinformatics:/home/bonface/projects/guix-past/modules\" \\\n ./pre-inst-env guix pack --no-grafts\\\n -S /gn2-profile=/ \\\n screen genenetwork2\n" :post-blank 1 :post-affiliated 1117 :mode nil :granularity nil :parent #7)) (paragraph (:begin 1343 :end 1387 :contents-begin 1343 :contents-end 1386 :post-blank 1 :post-affiliated 1343 :mode nil :granularity nil :parent #7) #("The output will look something similar to:\n" 0 43 (:parent #13))) (fixed-width (:begin 1387 :end 1454 :value "/gnu/store/x3m77vwaqcwba24p5s4lrb7w2ii16lj9-tarball-pack.tar.gz" :post-blank 2 :post-affiliated 1387 :mode nil :granularity nil :parent #7)) (paragraph (:begin 1454 :end 1640 :contents-begin 1454 :contents-end 1639 :post-blank 1 :post-affiliated 1454 :mode nil :granularity nil :parent #7) #("Now create a folder from which will host the following dockerfile. You\ncan name this file Dockerfile. Note that mariadb is the base image\nsince it already has mariadb installed for us.\n" 0 185 (:parent #15))) (src-block (:language "conf" :switches nil :parameters nil :begin 1640 :end 1847 :number-lines nil :preserve-indent nil :retain-labels t :use-labels t :label-fmt nil :value "FROM mariadb:latest\n\nCOPY ./gn2.tar.gz /tmp/gn2.tar.gz\nRUN tar -xzf /tmp/gn2.tar.gz -C / && rm -f /tmp/gn2.tar.gz && \\\n mkdir -p /usr/local/mysql /genotype_files/genotype/json\n" :post-blank 1 :post-affiliated 1640 :mode nil :granularity nil :parent #7)) (paragraph (:begin 1847 :end 1895 :contents-begin 1847 :contents-end 1894 :post-blank 1 :post-affiliated 1847 :mode nil :granularity nil :parent #7) #("Build the image(Note the fullstop at the end):\n" 0 47 (:parent #17))) (fixed-width (:begin 1895 :end 1955 :value "sudo docker build -t genenetwork2:latest -f Dockerfile ." :post-blank 2 :post-affiliated 1895 :mode nil :granularity nil :parent #7)) (paragraph (:begin 1955 :end 2009 :contents-begin 1955 :contents-end 2008 :post-blank 1 :post-affiliated 1955 :mode nil :granularity nil :parent #7) #("To load the image interactively you've just created:\n" 0 53 (:parent #19))) (fixed-width (:begin 2009 :end 2054 :value "docker run -ti \"genenetwork2:latest\" bash" :post-blank 2 :post-affiliated 2009 :mode nil :granularity nil :parent #7)) (paragraph (:begin 2054 :end 2141 :contents-begin 2054 :contents-end 2140 :post-blank 1 :post-affiliated 2054 :mode nil :granularity nil :parent #7) #("Assuming you have a docker instance running, you could always run\ncommands in it e.g:\n" 0 86 (:parent #21))) (fixed-width (:begin 2141 :end 2193 :value "docker run \"genenetwork2:latest\" python --version" :post-blank 1 :post-affiliated 2141 :mode nil :granularity nil :parent #7)))) (headline (:raw-value "Pushing to DockerHub" :begin 2194 :end 2817 :pre-blank 1 :contents-begin 2218 :contents-end 2817 :robust-begin 2220 :robust-end 2815 :level 1 :priority nil :tags nil :todo-keyword nil :todo-type nil :post-blank 0 :footnote-section-p nil :archivedp nil :commentedp nil :post-affiliated 2194 :title (#("Pushing to DockerHub" 0 20 (:parent #5))) :mode nil :granularity nil :parent (org-data (:begin 1 :contents-begin 1 :contents-end 2817 :end 2817 :robust-begin 3 :robust-end 2815 :post-blank 0 :post-affiliated 1 :path nil :mode org-data :CATEGORY nil :granularity nil) . #0)) (section (:begin 2218 :end 2817 :contents-begin 2218 :contents-end 2817 :robust-begin 2218 :robust-end 2815 :post-blank 0 :post-affiliated 2218 :mode section :granularity nil :parent #5) (paragraph (:begin 2218 :end 2325 :contents-begin 2218 :contents-end 2324 :post-blank 1 :post-affiliated 2218 :mode planning :granularity nil :parent #8) #("We use DockerHub to store the docker images from which we use on our\nCI environment using Github Actions.\n" 0 106 (:parent #11))) (paragraph (:begin 2325 :end 2447 :contents-begin 2325 :contents-end 2446 :post-blank 1 :post-affiliated 2325 :mode nil :granularity nil :parent #8) #("To push to dockerhub, first get the image name by running " 0 58 (:parent #12)) (verbatim (:begin 2383 :end 2398 :post-blank 0 :value "docker\nimages" :parent #12)) #(". Push to dockerhub using a command similar to:\n" 0 48 (:parent #12))) (fixed-width (:begin 2447 :end 2494 :value "docker push bonfacekilz/genenetwork2:latest" :post-blank 2 :post-affiliated 2447 :mode nil :granularity nil :parent #8)) (paragraph (:begin 2494 :end 2537 :contents-begin 2494 :contents-end 2536 :post-blank 1 :post-affiliated 2494 :mode nil :granularity nil :parent #8) #("Right now, we have 2 images on DockerHub:\n" 0 42 (:parent #14))) (plain-list (:type unordered :begin 2537 :end 2817 :contents-begin 2537 :contents-end 2817 :structure ((2537 0 "- " nil nil nil 2701) (2701 0 "- " nil nil nil 2817)) :post-blank 0 :post-affiliated 2537 :mode nil :granularity nil :parent #8) (item (:bullet "- " :begin 2537 :end 2701 :contents-begin 2539 :contents-end 2701 :checkbox nil :counter nil :structure ((2537 0 "- " nil nil nil 2701) (2701 0 "- " nil nil nil 2817)) :pre-blank 0 :post-blank 0 :post-affiliated 2537 :tag nil :mode item :granularity nil :parent #15) (paragraph (:begin 2539 :end 2701 :contents-begin 2539 :contents-end 2701 :post-blank 0 :post-affiliated 2539 :mode nil :granularity nil :parent #18) (link (:type "https" :path "//hub.docker.com/repository/docker/bonfacekilz/python2-genenetwork2" :format plain :raw-link "https://hub.docker.com/repository/docker/bonfacekilz/python2-genenetwork2" :application nil :search-option nil :begin 2539 :end 2612 :contents-begin nil :contents-end nil :post-blank 0 :parent #21)) #(":\n Contains the python2 version of gn2. Don't use this. Please use the\n python3 image!\n" 0 89 (:parent #21)))) (item (:bullet "- " :begin 2701 :end 2817 :contents-begin 2703 :contents-end 2817 :checkbox nil :counter nil :structure ((2537 0 "- " nil nil nil 2701) (2701 0 "- " nil nil nil 2817)) :pre-blank 0 :post-blank 0 :post-affiliated 2701 :tag nil :mode item :granularity nil :parent #15) (paragraph (:begin 2703 :end 2817 :contents-begin 2703 :contents-end 2817 :post-blank 0 :post-affiliated 2703 :mode nil :granularity nil :parent #19) (link (:type "https" :path "//hub.docker.com/repository/docker/bonfacekilz/python3-genenetwork2" :format plain :raw-link "https://hub.docker.com/repository/docker/bonfacekilz/python3-genenetwork2" :application nil :search-option nil :begin 2703 :end 2776 :contents-begin nil :contents-end nil :post-blank 0 :parent #22)) #(":\n Contains the python3 version of gn2.\n" 0 41 (:parent #22)))))))) "") org-export-data((org-data (:begin 1 :contents-begin 1 :contents-end 2817 :end 2817 :robust-begin 3 :robust-end 2815 :post-blank 0 :post-affiliated 1 :path nil :mode org-data :CATEGORY nil :granularity nil) (section (:begin 1 :end 35 :contents-begin 1 :contents-end 34 :robust-begin 1 :robust-end 32 :post-blank 1 :post-affiliated 1 :mode first-section :granularity nil :parent #0) (keyword (:key "TITLE" :value "Genenetwork2 Dockerized" :begin 1 :end 34 :post-blank 0 :post-affiliated 1 :mode top-comment :granularity nil :parent #3))) (headline (:raw-value "Table of Contents" :begin 35 :end 260 :pre-blank 0 :contents-begin 113 :contents-end 259 :robust-begin 115 :robust-end 257 :level 1 :priority nil :tags ("TOC") :todo-keyword nil :todo-type nil :post-blank 1 :footnote-section-p nil :archivedp nil :commentedp nil :post-affiliated 35 :title (#("Table of Contents" 0 17 (:parent #4))) :mode nil :granularity nil :parent #0) (section (:begin 113 :end 260 :contents-begin 113 :contents-end 259 :robust-begin 113 :robust-end 257 :post-blank 1 :post-affiliated 113 :mode section :granularity nil :parent #4) (plain-list (:type unordered :begin 113 :end 259 :contents-begin 113 :contents-end 259 :structure ((113 0 "- " nil nil nil 147) (147 0 "- " nil nil nil 209) (209 0 "- " nil nil nil 259)) :post-blank 0 :post-affiliated 113 :mode planning :granularity nil :parent #7) (item (:bullet "- " :begin 113 :end 147 :contents-begin 115 :contents-end 147 :checkbox nil :counter nil :structure ((113 0 "- " nil nil nil 147) (147 0 "- " nil nil nil 209) (209 0 "- " nil nil nil 259)) :pre-blank 0 :post-blank 0 :post-affiliated 113 :tag nil :mode item :granularity nil :parent #10) (paragraph (:begin 115 :end 147 :contents-begin 115 :contents-end 147 :post-blank 0 :post-affiliated 115 :mode nil :granularity nil :parent #13) (link (:type "custom-id" :path "introduction" :format bracket :raw-link "#introduction" :application nil :search-option nil :begin 115 :end 146 :contents-begin 132 :contents-end 144 :post-blank 0 :parent #16) #("Introduction" 0 12 (:parent #19))) #("\n" 0 1 (:parent #16)))) (item (:bullet "- " :begin 147 :end 209 :contents-begin 149 :contents-end 209 :checkbox nil :counter nil :structure ((113 0 "- " nil nil nil 147) (147 0 "- " nil nil nil 209) (209 0 "- " nil nil nil 259)) :pre-blank 0 :post-blank 0 :post-affiliated 147 :tag nil :mode item :granularity nil :parent #10) (paragraph (:begin 149 :end 209 :contents-begin 149 :contents-end 209 :post-blank 0 :post-affiliated 149 :mode nil :granularity nil :parent #14) (link (:type "custom-id" :path "creating-the-docker-images" :format bracket :raw-link "#creating-the-docker-images" :application nil :search-option nil :begin 149 :end 208 :contents-begin 180 :contents-end 206 :post-blank 0 :parent #17) #("Creating the Docker Images" 0 26 (:parent #20))) #("\n" 0 1 (:parent #17)))) (item (:bullet "- " :begin 209 :end 259 :contents-begin 211 :contents-end 259 :checkbox nil :counter nil :structure ((113 0 "- " nil nil nil 147) (147 0 "- " nil nil nil 209) (209 0 "- " nil nil nil 259)) :pre-blank 0 :post-blank 0 :post-affiliated 209 :tag nil :mode item :granularity nil :parent #10) (paragraph (:begin 211 :end 259 :contents-begin 211 :contents-end 259 :post-blank 0 :post-affiliated 211 :mode nil :granularity nil :parent #15) (link (:type "custom-id" :path "pushing-to-dockerhub" :format bracket :raw-link "#pushing-to-dockerhub" :application nil :search-option nil :begin 211 :end 258 :contents-begin 236 :contents-end 256 :post-blank 0 :parent #18) #("Pushing to DockerHub" 0 20 (:parent #21))) #("\n" 0 1 (:parent #18))))))) (headline (:raw-value "Introduction" :begin 260 :end 926 :pre-blank 1 :contents-begin 276 :contents-end 925 :robust-begin 278 :robust-end 923 :level 1 :priority nil :tags nil :todo-keyword nil :todo-type nil :post-blank 1 :footnote-section-p nil :archivedp nil :commentedp nil :post-affiliated 260 :title (#("Introduction" 0 12 (:parent #5))) :mode nil :granularity nil :parent #0) (section (:begin 276 :end 926 :contents-begin 276 :contents-end 925 :robust-begin 276 :robust-end 923 :post-blank 1 :post-affiliated 276 :mode section :granularity nil :parent #5) (paragraph (:begin 276 :end 600 :contents-begin 276 :contents-end 599 :post-blank 1 :post-affiliated 276 :mode planning :granularity nil :parent #8) #("The CI(Continuous Integration) system for Genenetwork2 uses " 0 60 (:parent #11)) (link (:type "https" :path "//github.com/features/actions" :format bracket :raw-link "https://github.com/features/actions" :application nil :search-option nil :begin 336 :end 391 :contents-begin 375 :contents-end 389 :post-blank 0 :parent #11) #("Github\nActions" 0 14 (:parent #15))) #(". As such, it's important to have a way to run tests using\nfacilities provided by GUIX in a reproducible way. This project\nleverages GUIX to generate a docker container from which the unittests\nare ran from.\n" 0 208 (:parent #11))) (paragraph (:begin 600 :end 830 :contents-begin 600 :contents-end 829 :post-blank 1 :post-affiliated 600 :mode nil :granularity nil :parent #8) #("Find instructions on how to set docker up inside GUIX " 0 54 (:parent #12)) (link (:type "https" :path "//github.com/pjotrp/guix-notes/blob/master/CONTAINERS.org#run-docker" :format bracket :raw-link "https://github.com/pjotrp/guix-notes/blob/master/CONTAINERS.org#run-docker" :application nil :search-option nil :begin 654 :end 738 :contents-begin 732 :contents-end 736 :post-blank 0 :parent #12) #("here" 0 4 (:parent #16))) #(". This\ndocument will not get into that. It's assumed that you have a working\ndocker setup.\n" 0 91 (:parent #12))) (paragraph (:begin 830 :end 925 :contents-begin 830 :contents-end 925 :post-blank 0 :post-affiliated 830 :mode nil :granularity nil :parent #8) #("The rest of this document outlines how the docker container used in\nthe CI builds was created.\n" 0 95 (:parent #13))))) (headline (:raw-value "Creating the Docker Images" :begin 926 :end 2194 :pre-blank 1 :contents-begin 956 :contents-end 2193 :robust-begin 958 :robust-end 2191 :level 1 :priority nil :tags nil :todo-keyword nil :todo-type nil :post-blank 1 :footnote-section-p nil :archivedp nil :commentedp nil :post-affiliated 926 :title (#("Creating the Docker Images" 0 26 (:parent #6))) :mode nil :granularity nil :parent #0) (section (:begin 956 :end 2194 :contents-begin 956 :contents-end 2193 :robust-begin 956 :robust-end 2191 :post-blank 1 :post-affiliated 956 :mode section :granularity nil :parent #6) (paragraph (:begin 956 :end 1071 :contents-begin 956 :contents-end 1070 :post-blank 1 :post-affiliated 956 :mode planning :granularity nil :parent #9) #("The general idea is that GUIX is used to generate a set of binaries,\nwhich will be added to a base mariaDB image.\n" 0 114 (:parent #12))) (paragraph (:begin 1071 :end 1117 :contents-begin 1071 :contents-end 1116 :post-blank 1 :post-affiliated 1071 :mode nil :granularity nil :parent #9) #("First create the gn2 tar archive by running:\n" 0 45 (:parent #13))) (src-block (:language "sh" :switches nil :parameters nil :begin 1117 :end 1343 :number-lines nil :preserve-indent nil :retain-labels t :use-labels t :label-fmt nil :value "env GUIX_PACKAGE_PATH=\"/home/bonface/projects/guix-bioinformatics:/home/bonface/projects/guix-past/modules\" \\\n ./pre-inst-env guix pack --no-grafts\\\n -S /gn2-profile=/ \\\n screen genenetwork2\n" :post-blank 1 :post-affiliated 1117 :mode nil :granularity nil :parent #9)) (paragraph (:begin 1343 :end 1387 :contents-begin 1343 :contents-end 1386 :post-blank 1 :post-affiliated 1343 :mode nil :granularity nil :parent #9) #("The output will look something similar to:\n" 0 43 (:parent #15))) (fixed-width (:begin 1387 :end 1454 :value "/gnu/store/x3m77vwaqcwba24p5s4lrb7w2ii16lj9-tarball-pack.tar.gz" :post-blank 2 :post-affiliated 1387 :mode nil :granularity nil :parent #9)) (paragraph (:begin 1454 :end 1640 :contents-begin 1454 :contents-end 1639 :post-blank 1 :post-affiliated 1454 :mode nil :granularity nil :parent #9) #("Now create a folder from which will host the following dockerfile. You\ncan name this file Dockerfile. Note that mariadb is the base image\nsince it already has mariadb installed for us.\n" 0 185 (:parent #17))) (src-block (:language "conf" :switches nil :parameters nil :begin 1640 :end 1847 :number-lines nil :preserve-indent nil :retain-labels t :use-labels t :label-fmt nil :value "FROM mariadb:latest\n\nCOPY ./gn2.tar.gz /tmp/gn2.tar.gz\nRUN tar -xzf /tmp/gn2.tar.gz -C / && rm -f /tmp/gn2.tar.gz && \\\n mkdir -p /usr/local/mysql /genotype_files/genotype/json\n" :post-blank 1 :post-affiliated 1640 :mode nil :granularity nil :parent #9)) (paragraph (:begin 1847 :end 1895 :contents-begin 1847 :contents-end 1894 :post-blank 1 :post-affiliated 1847 :mode nil :granularity nil :parent #9) #("Build the image(Note the fullstop at the end):\n" 0 47 (:parent #19))) (fixed-width (:begin 1895 :end 1955 :value "sudo docker build -t genenetwork2:latest -f Dockerfile ." :post-blank 2 :post-affiliated 1895 :mode nil :granularity nil :parent #9)) (paragraph (:begin 1955 :end 2009 :contents-begin 1955 :contents-end 2008 :post-blank 1 :post-affiliated 1955 :mode nil :granularity nil :parent #9) #("To load the image interactively you've just created:\n" 0 53 (:parent #21))) (fixed-width (:begin 2009 :end 2054 :value "docker run -ti \"genenetwork2:latest\" bash" :post-blank 2 :post-affiliated 2009 :mode nil :granularity nil :parent #9)) (paragraph (:begin 2054 :end 2141 :contents-begin 2054 :contents-end 2140 :post-blank 1 :post-affiliated 2054 :mode nil :granularity nil :parent #9) #("Assuming you have a docker instance running, you could always run\ncommands in it e.g:\n" 0 86 (:parent #23))) (fixed-width (:begin 2141 :end 2193 :value "docker run \"genenetwork2:latest\" python --version" :post-blank 1 :post-affiliated 2141 :mode nil :granularity nil :parent #9)))) (headline (:raw-value "Pushing to DockerHub" :begin 2194 :end 2817 :pre-blank 1 :contents-begin 2218 :contents-end 2817 :robust-begin 2220 :robust-end 2815 :level 1 :priority nil :tags nil :todo-keyword nil :todo-type nil :post-blank 0 :footnote-section-p nil :archivedp nil :commentedp nil :post-affiliated 2194 :title (#("Pushing to DockerHub" 0 20 (:parent #7))) :mode nil :granularity nil :parent #0) (section (:begin 2218 :end 2817 :contents-begin 2218 :contents-end 2817 :robust-begin 2218 :robust-end 2815 :post-blank 0 :post-affiliated 2218 :mode section :granularity nil :parent #7) (paragraph (:begin 2218 :end 2325 :contents-begin 2218 :contents-end 2324 :post-blank 1 :post-affiliated 2218 :mode planning :granularity nil :parent #10) #("We use DockerHub to store the docker images from which we use on our\nCI environment using Github Actions.\n" 0 106 (:parent #13))) (paragraph (:begin 2325 :end 2447 :contents-begin 2325 :contents-end 2446 :post-blank 1 :post-affiliated 2325 :mode nil :granularity nil :parent #10) #("To push to dockerhub, first get the image name by running " 0 58 (:parent #14)) (verbatim (:begin 2383 :end 2398 :post-blank 0 :value "docker\nimages" :parent #14)) #(". Push to dockerhub using a command similar to:\n" 0 48 (:parent #14))) (fixed-width (:begin 2447 :end 2494 :value "docker push bonfacekilz/genenetwork2:latest" :post-blank 2 :post-affiliated 2447 :mode nil :granularity nil :parent #10)) (paragraph (:begin 2494 :end 2537 :contents-begin 2494 :contents-end 2536 :post-blank 1 :post-affiliated 2494 :mode nil :granularity nil :parent #10) #("Right now, we have 2 images on DockerHub:\n" 0 42 (:parent #16))) (plain-list (:type unordered :begin 2537 :end 2817 :contents-begin 2537 :contents-end 2817 :structure ((2537 0 "- " nil nil nil 2701) (2701 0 "- " nil nil nil 2817)) :post-blank 0 :post-affiliated 2537 :mode nil :granularity nil :parent #10) (item (:bullet "- " :begin 2537 :end 2701 :contents-begin 2539 :contents-end 2701 :checkbox nil :counter nil :structure ((2537 0 "- " nil nil nil 2701) (2701 0 "- " nil nil nil 2817)) :pre-blank 0 :post-blank 0 :post-affiliated 2537 :tag nil :mode item :granularity nil :parent #17) (paragraph (:begin 2539 :end 2701 :contents-begin 2539 :contents-end 2701 :post-blank 0 :post-affiliated 2539 :mode nil :granularity nil :parent #20) (link (:type "https" :path "//hub.docker.com/repository/docker/bonfacekilz/python2-genenetwork2" :format plain :raw-link "https://hub.docker.com/repository/docker/bonfacekilz/python2-genenetwork2" :application nil :search-option nil :begin 2539 :end 2612 :contents-begin nil :contents-end nil :post-blank 0 :parent #23)) #(":\n Contains the python2 version of gn2. Don't use this. Please use the\n python3 image!\n" 0 89 (:parent #23)))) (item (:bullet "- " :begin 2701 :end 2817 :contents-begin 2703 :contents-end 2817 :checkbox nil :counter nil :structure ((2537 0 "- " nil nil nil 2701) (2701 0 "- " nil nil nil 2817)) :pre-blank 0 :post-blank 0 :post-affiliated 2701 :tag nil :mode item :granularity nil :parent #17) (paragraph (:begin 2703 :end 2817 :contents-begin 2703 :contents-end 2817 :post-blank 0 :post-affiliated 2703 :mode nil :granularity nil :parent #21) (link (:type "https" :path "//hub.docker.com/repository/docker/bonfacekilz/python3-genenetwork2" :format plain :raw-link "https://hub.docker.com/repository/docker/bonfacekilz/python3-genenetwork2" :application nil :search-option nil :begin 2703 :end 2776 :contents-begin nil :contents-end nil :post-blank 0 :parent #24)) #(":\n Contains the python3 version of gn2.\n" 0 41 (:parent #24)))))))) (:export-options (body-only) :back-end #s(org-export-backend :name html :parent nil :transcoders ((bold . org-html-bold) (center-block . org-html-center-block) (clock . org-html-clock) (code . org-html-code) (drawer . org-html-drawer) (dynamic-block . org-html-dynamic-block) (entity . org-html-entity) (example-block . org-html-example-block) (export-block . org-html-export-block) (export-snippet . org-html-export-snippet) (fixed-width . org-html-fixed-width) (footnote-reference . org-html-footnote-reference) (headline . org-html-headline) (horizontal-rule . org-html-horizontal-rule) (inline-src-block . org-html-inline-src-block) (inlinetask . org-html-inlinetask) (inner-template . org-html-inner-template) (italic . org-html-italic) (item . org-html-item) (keyword . org-html-keyword) (latex-environment . org-html-latex-environment) (latex-fragment . org-html-latex-fragment) (line-break . org-html-line-break) (link . org-html-link) (node-property . org-html-node-property) (paragraph . org-html-paragraph) (plain-list . org-html-plain-list) (plain-text . org-html-plain-text) (planning . org-html-planning) (property-drawer . org-html-property-drawer) (quote-block . org-html-quote-block) (radio-target . org-html-radio-target) (section . org-html-section) (special-block . org-html-special-block) (src-block . org-html-src-block) (statistics-cookie . org-html-statistics-cookie) (strike-through . org-html-strike-through) (subscript . org-html-subscript) (superscript . org-html-superscript) (table . org-html-table) (table-cell . org-html-table-cell) (table-row . org-html-table-row) (target . org-html-target) (template . org-html-template) (timestamp . org-html-timestamp) (underline . org-html-underline) (verbatim . org-html-verbatim) (verse-block . org-html-verse-block)) :options ((:html-doctype "HTML_DOCTYPE" nil org-html-doctype) (:html-container "HTML_CONTAINER" nil org-html-container-element) (:html-content-class "HTML_CONTENT_CLASS" nil org-html-content-class) (:description "DESCRIPTION" nil nil newline) (:keywords "KEYWORDS" nil nil space) (:html-html5-fancy nil "html5-fancy" org-html-html5-fancy) (:html-link-use-abs-url nil "html-link-use-abs-url" org-html-link-use-abs-url) (:html-link-home "HTML_LINK_HOME" nil org-html-link-home) (:html-link-up "HTML_LINK_UP" nil org-html-link-up) (:html-mathjax "HTML_MATHJAX" nil "" space) (:html-equation-reference-format "HTML_EQUATION_REFERENCE_FORMAT" nil org-html-equation-reference-format t) (:html-postamble nil "html-postamble" org-html-postamble) (:html-preamble nil "html-preamble" org-html-preamble) (:html-head "HTML_HEAD" nil org-html-head newline) (:html-head-extra "HTML_HEAD_EXTRA" nil org-html-head-extra newline) (:subtitle "SUBTITLE" nil nil parse) (:html-head-include-default-style nil "html-style" org-html-head-include-default-style) (:html-head-include-scripts nil "html-scripts" org-html-head-include-scripts) (:html-allow-name-attribute-in-anchors nil nil org-html-allow-name-attribute-in-anchors) (:html-divs nil nil org-html-divs) (:html-checkbox-type nil nil org-html-checkbox-type) (:html-extension nil nil org-html-extension) (:html-footnote-format nil nil org-html-footnote-format) (:html-footnote-separator nil nil org-html-footnote-separator) (:html-footnotes-section nil nil org-html-footnotes-section) (:html-format-drawer-function nil nil org-html-format-drawer-function) (:html-format-headline-function nil nil org-html-format-headline-function) (:html-format-inlinetask-function nil nil org-html-format-inlinetask-function) (:html-home/up-format nil nil org-html-home/up-format) (:html-indent nil nil org-html-indent) (:html-infojs-options nil nil org-html-infojs-options) (:html-infojs-template nil nil org-html-infojs-template) (:html-inline-image-rules nil nil org-html-inline-image-rules) (:html-link-org-files-as-html nil nil org-html-link-org-files-as-html) (:html-mathjax-options nil nil org-html-mathjax-options) (:html-mathjax-template nil nil org-html-mathjax-template) (:html-metadata-timestamp-format nil nil org-html-metadata-timestamp-format) (:html-postamble-format nil nil org-html-postamble-format) (:html-preamble-format nil nil org-html-preamble-format) (:html-prefer-user-labels nil nil org-html-prefer-user-labels) (:html-self-link-headlines nil nil org-html-self-link-headlines) (:html-table-align-individual-fields nil nil org-html-table-align-individual-fields) (:html-table-caption-above nil nil org-html-table-caption-above) (:html-table-data-tags nil nil org-html-table-data-tags) (:html-table-header-tags nil nil org-html-table-header-tags) (:html-table-use-header-tags-for-first-column nil nil org-html-table-use-header-tags-for-first-column) (:html-tag-class-prefix nil nil org-html-tag-class-prefix) (:html-text-markup-alist nil nil org-html-text-markup-alist) (:html-todo-kwd-class-prefix nil nil org-html-todo-kwd-class-prefix) (:html-toplevel-hlevel nil nil org-html-toplevel-hlevel) (:html-use-infojs nil nil org-html-use-infojs) (:html-validation-link nil nil org-html-validation-link) (:html-viewport nil nil org-html-viewport) (:html-inline-images nil nil org-html-inline-images) (:html-table-attributes nil nil org-html-table-default-attributes) (:html-table-row-open-tag nil nil org-html-table-row-open-tag) (:html-table-row-close-tag nil nil org-html-table-row-close-tag) (:html-xml-declaration nil nil org-html-xml-declaration) (:html-wrap-src-lines nil nil org-html-wrap-src-lines) (:html-klipsify-src nil nil org-html-klipsify-src) (:html-klipse-css nil nil org-html-klipse-css) (:html-klipse-js nil nil org-html-klipse-js) (:html-klipse-selection-script nil nil org-html-klipse-selection-script) (:infojs-opt "INFOJS_OPT" nil nil) (:creator "CREATOR" nil org-html-creator-string) (:with-latex nil "tex" org-html-with-latex) (:latex-header "LATEX_HEADER" nil nil newline)) :filters ((:filter-options . org-html-infojs-install-script) (:filter-parse-tree . org-html-image-link-filter) (:filter-final-output . org-html-final-function)) :blocks nil :menu (104 "Export to HTML" ((72 "As HTML buffer" org-html-export-as-html) (104 "As HTML file" org-html-export-to-html) (111 "As HTML file and open" (lambda (a s v b) (if a (org-html-export-to-html t s v b) (org-open-file (org-html-export-to-html nil s v b)))))))) :translate-alist ((bold . org-html-bold) (center-block . org-html-center-block) (clock . org-html-clock) (code . org-html-code) (drawer . org-html-drawer) (dynamic-block . org-html-dynamic-block) (entity . org-html-entity) (example-block . org-html-example-block) (export-block . org-html-export-block) (export-snippet . org-html-export-snippet) (fixed-width . org-html-fixed-width) (footnote-reference . org-html-footnote-reference) (headline . org-html-headline) (horizontal-rule . org-html-horizontal-rule) (inline-src-block . org-html-inline-src-block) (inlinetask . org-html-inlinetask) (inner-template . org-html-inner-template) (italic . org-html-italic) (item . org-html-item) (keyword . org-html-keyword) (latex-environment . org-html-latex-environment) (latex-fragment . org-html-latex-fragment) (line-break . org-html-line-break) (link . org-html-link) (node-property . org-html-node-property) (paragraph . org-html-paragraph) (plain-list . org-html-plain-list) (plain-text . org-html-plain-text) (planning . org-html-planning) (property-drawer . org-html-property-drawer) (quote-block . org-html-quote-block) (radio-target . org-html-radio-target) (section . org-html-section) (special-block . org-html-special-block) (src-block . org-html-src-block) (statistics-cookie . org-html-statistics-cookie) (strike-through . org-html-strike-through) (subscript . org-html-subscript) (superscript . org-html-superscript) (table . org-html-table) (table-cell . org-html-table-cell) (table-row . org-html-table-row) (target . org-html-target) (template . org-html-template) (timestamp . org-html-timestamp) (underline . org-html-underline) (verbatim . org-html-verbatim) (verse-block . org-html-verse-block)) :exported-data # :input-buffer " *temp*" :input-file nil :html-doctype "xhtml-strict" :html-container "div" :html-content-class "content" :description nil :keywords nil :html-html5-fancy nil :html-link-use-abs-url nil :html-link-home "" :html-link-up "" :html-mathjax "" :html-equation-reference-format "\\eqref{%s}" :html-postamble auto :html-preamble t :html-head "" :html-head-extra "" :subtitle nil :html-head-include-default-style t :html-head-include-scripts nil :html-allow-name-attribute-in-anchors nil :html-divs ((preamble "div" "preamble") (content "div" "content") (postamble "div" "postamble")) :html-checkbox-type ascii :html-extension "html" :html-footnote-format "%s" :html-footnote-separator ", " :html-footnotes-section "
\n

%s:

\n
\n%s\n
\n
" :html-format-drawer-function #f(compiled-function (name contents) #) :html-format-headline-function org-html-format-headline-default-function :html-format-inlinetask-function org-html-format-inlinetask-default-function :html-home/up-format "
\n UP \n |\n HOME \n
" :html-indent nil :html-infojs-options ((path . "https://orgmode.org/org-info.js") (view . "info") (toc . :with-toc) (ftoc . "0") (tdepth . "max") (sdepth . "max") (mouse . "underline") (buttons . "0") (ltoc . "1") (up . :html-link-up) (home . :html-link-home)) :html-infojs-template "\n\n" :html-inline-image-rules (("file" . "\\(?:\\.\\(?:gif\\|jp\\(?:e?g\\)\\|png\\|svg\\|webp\\)\\)") ("http" . "\\(?:\\.\\(?:gif\\|jp\\(?:e?g\\)\\|png\\|svg\\|webp\\)\\)") ("https" . "\\(?:\\.\\(?:gif\\|jp\\(?:e?g\\)\\|png\\|svg\\|webp\\)\\)")) :html-link-org-files-as-html t :html-mathjax-options ((path "https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-mml-chtml.js") (scale 1.0) (align "center") (font "mathjax-modern") (overflow "overflow") (tags "ams") (indent "0em") (multlinewidth "85%") (tagindent ".8em") (tagside "right")) :html-mathjax-template "\n\n\n" :html-metadata-timestamp-format "%Y-%m-%d %a %H:%M" :html-postamble-format (("en" "

Author: %a (%e)

\n

Date: %d

\n

%c

\n

%v

")) :html-preamble-format (("en" "")) :html-prefer-user-labels nil :html-self-link-headlines nil :html-table-align-individual-fields t :html-table-caption-above t :html-table-data-tags ("" . "") :html-table-header-tags ("" . "") :html-table-use-header-tags-for-first-column nil :html-tag-class-prefix "" :html-text-markup-alist ((bold . "%s") (code . "%s") (italic . "%s") (strike-through . "%s") (underline . "%s") (verbatim . "%s")) :html-todo-kwd-class-prefix "" :html-toplevel-hlevel 2 :html-use-infojs when-configured :html-validation-link "Validate" :html-viewport ((width "device-width") (initial-scale "1") (minimum-scale "") (maximum-scale "") (user-scalable "")) :html-inline-images t :html-table-attributes (:border "2" :cellspacing "0" :cellpadding "6" :rules "groups" :frame "hsides") :html-table-row-open-tag "" :html-table-row-close-tag "" :html-xml-declaration (("html" . "") ("php" . "\"; ?>")) :html-wrap-src-lines nil :html-klipsify-src nil :html-klipse-css "https://storage.googleapis.com/app.klipse.tech/css/codemirror.css" :html-klipse-js "https://storage.googleapis.com/app.klipse.tech/plugin_prod/js/klipse_plugin.min.js" :html-klipse-selection-script "window.klipse_settings = {selector_eval_html: '.src-html',\n selector_eval_js: '.src-js',\n selector_eval_python_client: '.src-python',\n selector_eval_scheme: '.src-scheme',\n selector: '.src-clojure',\n selector_eval_ruby: '.src-ruby'};" :infojs-opt nil :creator "Emacs 29.4 (Org mode 9.6.15)" :with-latex t :latex-header nil :title (#("Genenetwork2 Dockerized" 0 23 (:parent #148))) :date nil :author (#("unknown" 0 7 (:parent #152))) :email "unknown@genenetwork-development" :language "en" :select-tags ("export") :exclude-tags ("noexport") :headline-levels 3 :preserve-breaks nil :section-numbers nil :time-stamp-file t :with-archived-trees headline :with-author t :with-broken-links nil :with-clocks nil :with-creator nil :with-date t :with-drawers (not "LOGBOOK") :with-email nil :with-emphasize t :with-entities t :with-fixed-width t :with-footnotes t :with-inlinetasks t :with-planning nil :with-priority nil :with-properties nil :with-smart-quotes nil :with-special-strings t :with-statistics-cookies t :with-sub-superscript t :with-toc nil :with-tables t :with-tags t :with-tasks t :with-timestamps t :with-title t :with-todo-keywords t :cite-export (basic nil nil) :bibliography nil :filter-body nil :filter-bold nil :filter-babel-call nil :filter-center-block nil :filter-clock nil :filter-code nil :filter-diary-sexp nil :filter-drawer nil :filter-dynamic-block nil :filter-entity nil :filter-example-block nil :filter-export-block nil :filter-export-snippet nil :filter-final-output (org-html-final-function) :filter-fixed-width nil :filter-footnote-definition nil :filter-footnote-reference nil :filter-headline nil :filter-horizontal-rule nil :filter-inline-babel-call nil :filter-inline-src-block nil :filter-inlinetask nil :filter-italic nil :filter-item nil :filter-keyword nil :filter-latex-environment nil :filter-latex-fragment nil :filter-line-break nil :filter-link nil :filter-node-property nil :filter-options (org-html-infojs-install-script) :filter-paragraph nil :filter-parse-tree (org-html-image-link-filter) :filter-plain-list nil :filter-plain-text nil :filter-planning nil :filter-property-drawer nil :filter-quote-block nil :filter-radio-target nil :filter-section nil :filter-special-block nil :filter-src-block nil :filter-statistics-cookie nil :filter-strike-through nil :filter-subscript nil :filter-superscript nil :filter-table nil :filter-table-cell nil :filter-table-row nil :filter-target nil :filter-timestamp nil :filter-underline nil :filter-verbatim nil :filter-verse-block nil :ignore-list nil :parse-tree (org-data (:begin 1 :contents-begin 1 :contents-end 2817 :end 2817 :robust-begin 3 :robust-end 2815 :post-blank 0 :post-affiliated 1 :path nil :mode org-data :CATEGORY nil :granularity nil) (section (:begin 1 :end 35 :contents-begin 1 :contents-end 34 :robust-begin 1 :robust-end 32 :post-blank 1 :post-affiliated 1 :mode first-section :granularity nil :parent #338) (keyword (:key "TITLE" :value "Genenetwork2 Dockerized" :begin 1 :end 34 :post-blank 0 :post-affiliated 1 :mode top-comment :granularity nil :parent #341))) (headline (:raw-value "Table of Contents" :begin 35 :end 260 :pre-blank 0 :contents-begin 113 :contents-end 259 :robust-begin 115 :robust-end 257 :level 1 :priority nil :tags ("TOC") :todo-keyword nil :todo-type nil :post-blank 1 :footnote-section-p nil :archivedp nil :commentedp nil :post-affiliated 35 :title (#("Table of Contents" 0 17 (:parent #342))) :mode nil :granularity nil :parent #338) (section (:begin 113 :end 260 :contents-begin 113 :contents-end 259 :robust-begin 113 :robust-end 257 :post-blank 1 :post-affiliated 113 :mode section :granularity nil :parent #342) (plain-list (:type unordered :begin 113 :end 259 :contents-begin 113 :contents-end 259 :structure ((113 0 "- " nil nil nil 147) (147 0 "- " nil nil nil 209) (209 0 "- " nil nil nil 259)) :post-blank 0 :post-affiliated 113 :mode planning :granularity nil :parent #345) (item (:bullet "- " :begin 113 :end 147 :contents-begin 115 :contents-end 147 :checkbox nil :counter nil :structure ((113 0 "- " nil nil nil 147) (147 0 "- " nil nil nil 209) (209 0 "- " nil nil nil 259)) :pre-blank 0 :post-blank 0 :post-affiliated 113 :tag nil :mode item :granularity nil :parent #348) (paragraph (:begin 115 :end 147 :contents-begin 115 :contents-end 147 :post-blank 0 :post-affiliated 115 :mode nil :granularity nil :parent #351) (link (:type "custom-id" :path "introduction" :format bracket :raw-link "#introduction" :application nil :search-option nil :begin 115 :end 146 :contents-begin 132 :contents-end 144 :post-blank 0 :parent #354) #("Introduction" 0 12 (:parent #357))) #("\n" 0 1 (:parent #354)))) (item (:bullet "- " :begin 147 :end 209 :contents-begin 149 :contents-end 209 :checkbox nil :counter nil :structure ((113 0 "- " nil nil nil 147) (147 0 "- " nil nil nil 209) (209 0 "- " nil nil nil 259)) :pre-blank 0 :post-blank 0 :post-affiliated 147 :tag nil :mode item :granularity nil :parent #348) (paragraph (:begin 149 :end 209 :contents-begin 149 :contents-end 209 :post-blank 0 :post-affiliated 149 :mode nil :granularity nil :parent #352) (link (:type "custom-id" :path "creating-the-docker-images" :format bracket :raw-link "#creating-the-docker-images" :application nil :search-option nil :begin 149 :end 208 :contents-begin 180 :contents-end 206 :post-blank 0 :parent #355) #("Creating the Docker Images" 0 26 (:parent #358))) #("\n" 0 1 (:parent #355)))) (item (:bullet "- " :begin 209 :end 259 :contents-begin 211 :contents-end 259 :checkbox nil :counter nil :structure ((113 0 "- " nil nil nil 147) (147 0 "- " nil nil nil 209) (209 0 "- " nil nil nil 259)) :pre-blank 0 :post-blank 0 :post-affiliated 209 :tag nil :mode item :granularity nil :parent #348) (paragraph (:begin 211 :end 259 :contents-begin 211 :contents-end 259 :post-blank 0 :post-affiliated 211 :mode nil :granularity nil :parent #353) (link (:type "custom-id" :path "pushing-to-dockerhub" :format bracket :raw-link "#pushing-to-dockerhub" :application nil :search-option nil :begin 211 :end 258 :contents-begin 236 :contents-end 256 :post-blank 0 :parent #356) #("Pushing to DockerHub" 0 20 (:parent #359))) #("\n" 0 1 (:parent #356))))))) (headline (:raw-value "Introduction" :begin 260 :end 926 :pre-blank 1 :contents-begin 276 :contents-end 925 :robust-begin 278 :robust-end 923 :level 1 :priority nil :tags nil :todo-keyword nil :todo-type nil :post-blank 1 :footnote-section-p nil :archivedp nil :commentedp nil :post-affiliated 260 :title (#("Introduction" 0 12 (:parent #343))) :mode nil :granularity nil :parent #338) (section (:begin 276 :end 926 :contents-begin 276 :contents-end 925 :robust-begin 276 :robust-end 923 :post-blank 1 :post-affiliated 276 :mode section :granularity nil :parent #343) (paragraph (:begin 276 :end 600 :contents-begin 276 :contents-end 599 :post-blank 1 :post-affiliated 276 :mode planning :granularity nil :parent #346) #("The CI(Continuous Integration) system for Genenetwork2 uses " 0 60 (:parent #349)) (link (:type "https" :path "//github.com/features/actions" :format bracket :raw-link "https://github.com/features/actions" :application nil :search-option nil :begin 336 :end 391 :contents-begin 375 :contents-end 389 :post-blank 0 :parent #349) #("Github\nActions" 0 14 (:parent #353))) #(". As such, it's important to have a way to run tests using\nfacilities provided by GUIX in a reproducible way. This project\nleverages GUIX to generate a docker container from which the unittests\nare ran from.\n" 0 208 (:parent #349))) (paragraph (:begin 600 :end 830 :contents-begin 600 :contents-end 829 :post-blank 1 :post-affiliated 600 :mode nil :granularity nil :parent #346) #("Find instructions on how to set docker up inside GUIX " 0 54 (:parent #350)) (link (:type "https" :path "//github.com/pjotrp/guix-notes/blob/master/CONTAINERS.org#run-docker" :format bracket :raw-link "https://github.com/pjotrp/guix-notes/blob/master/CONTAINERS.org#run-docker" :application nil :search-option nil :begin 654 :end 738 :contents-begin 732 :contents-end 736 :post-blank 0 :parent #350) #("here" 0 4 (:parent #354))) #(". This\ndocument will not get into that. It's assumed that you have a working\ndocker setup.\n" 0 91 (:parent #350))) (paragraph (:begin 830 :end 925 :contents-begin 830 :contents-end 925 :post-blank 0 :post-affiliated 830 :mode nil :granularity nil :parent #346) #("The rest of this document outlines how the docker container used in\nthe CI builds was created.\n" 0 95 (:parent #351))))) (headline (:raw-value "Creating the Docker Images" :begin 926 :end 2194 :pre-blank 1 :contents-begin 956 :contents-end 2193 :robust-begin 958 :robust-end 2191 :level 1 :priority nil :tags nil :todo-keyword nil :todo-type nil :post-blank 1 :footnote-section-p nil :archivedp nil :commentedp nil :post-affiliated 926 :title (#("Creating the Docker Images" 0 26 (:parent #344))) :mode nil :granularity nil :parent #338) (section (:begin 956 :end 2194 :contents-begin 956 :contents-end 2193 :robust-begin 956 :robust-end 2191 :post-blank 1 :post-affiliated 956 :mode section :granularity nil :parent #344) (paragraph (:begin 956 :end 1071 :contents-begin 956 :contents-end 1070 :post-blank 1 :post-affiliated 956 :mode planning :granularity nil :parent #347) #("The general idea is that GUIX is used to generate a set of binaries,\nwhich will be added to a base mariaDB image.\n" 0 114 (:parent #350))) (paragraph (:begin 1071 :end 1117 :contents-begin 1071 :contents-end 1116 :post-blank 1 :post-affiliated 1071 :mode nil :granularity nil :parent #347) #("First create the gn2 tar archive by running:\n" 0 45 (:parent #351))) (src-block (:language "sh" :switches nil :parameters nil :begin 1117 :end 1343 :number-lines nil :preserve-indent nil :retain-labels t :use-labels t :label-fmt nil :value "env GUIX_PACKAGE_PATH=\"/home/bonface/projects/guix-bioinformatics:/home/bonface/projects/guix-past/modules\" \\\n ./pre-inst-env guix pack --no-grafts\\\n -S /gn2-profile=/ \\\n screen genenetwork2\n" :post-blank 1 :post-affiliated 1117 :mode nil :granularity nil :parent #347)) (paragraph (:begin 1343 :end 1387 :contents-begin 1343 :contents-end 1386 :post-blank 1 :post-affiliated 1343 :mode nil :granularity nil :parent #347) #("The output will look something similar to:\n" 0 43 (:parent #353))) (fixed-width (:begin 1387 :end 1454 :value "/gnu/store/x3m77vwaqcwba24p5s4lrb7w2ii16lj9-tarball-pack.tar.gz" :post-blank 2 :post-affiliated 1387 :mode nil :granularity nil :parent #347)) (paragraph (:begin 1454 :end 1640 :contents-begin 1454 :contents-end 1639 :post-blank 1 :post-affiliated 1454 :mode nil :granularity nil :parent #347) #("Now create a folder from which will host the following dockerfile. You\ncan name this file Dockerfile. Note that mariadb is the base image\nsince it already has mariadb installed for us.\n" 0 185 (:parent #355))) (src-block (:language "conf" :switches nil :parameters nil :begin 1640 :end 1847 :number-lines nil :preserve-indent nil :retain-labels t :use-labels t :label-fmt nil :value "FROM mariadb:latest\n\nCOPY ./gn2.tar.gz /tmp/gn2.tar.gz\nRUN tar -xzf /tmp/gn2.tar.gz -C / && rm -f /tmp/gn2.tar.gz && \\\n mkdir -p /usr/local/mysql /genotype_files/genotype/json\n" :post-blank 1 :post-affiliated 1640 :mode nil :granularity nil :parent #347)) (paragraph (:begin 1847 :end 1895 :contents-begin 1847 :contents-end 1894 :post-blank 1 :post-affiliated 1847 :mode nil :granularity nil :parent #347) #("Build the image(Note the fullstop at the end):\n" 0 47 (:parent #357))) (fixed-width (:begin 1895 :end 1955 :value "sudo docker build -t genenetwork2:latest -f Dockerfile ." :post-blank 2 :post-affiliated 1895 :mode nil :granularity nil :parent #347)) (paragraph (:begin 1955 :end 2009 :contents-begin 1955 :contents-end 2008 :post-blank 1 :post-affiliated 1955 :mode nil :granularity nil :parent #347) #("To load the image interactively you've just created:\n" 0 53 (:parent #359))) (fixed-width (:begin 2009 :end 2054 :value "docker run -ti \"genenetwork2:latest\" bash" :post-blank 2 :post-affiliated 2009 :mode nil :granularity nil :parent #347)) (paragraph (:begin 2054 :end 2141 :contents-begin 2054 :contents-end 2140 :post-blank 1 :post-affiliated 2054 :mode nil :granularity nil :parent #347) #("Assuming you have a docker instance running, you could always run\ncommands in it e.g:\n" 0 86 (:parent #361))) (fixed-width (:begin 2141 :end 2193 :value "docker run \"genenetwork2:latest\" python --version" :post-blank 1 :post-affiliated 2141 :mode nil :granularity nil :parent #347)))) (headline (:raw-value "Pushing to DockerHub" :begin 2194 :end 2817 :pre-blank 1 :contents-begin 2218 :contents-end 2817 :robust-begin 2220 :robust-end 2815 :level 1 :priority nil :tags nil :todo-keyword nil :todo-type nil :post-blank 0 :footnote-section-p nil :archivedp nil :commentedp nil :post-affiliated 2194 :title (#("Pushing to DockerHub" 0 20 (:parent #345))) :mode nil :granularity nil :parent #338) (section (:begin 2218 :end 2817 :contents-begin 2218 :contents-end 2817 :robust-begin 2218 :robust-end 2815 :post-blank 0 :post-affiliated 2218 :mode section :granularity nil :parent #345) (paragraph (:begin 2218 :end 2325 :contents-begin 2218 :contents-end 2324 :post-blank 1 :post-affiliated 2218 :mode planning :granularity nil :parent #348) #("We use DockerHub to store the docker images from which we use on our\nCI environment using Github Actions.\n" 0 106 (:parent #351))) (paragraph (:begin 2325 :end 2447 :contents-begin 2325 :contents-end 2446 :post-blank 1 :post-affiliated 2325 :mode nil :granularity nil :parent #348) #("To push to dockerhub, first get the image name by running " 0 58 (:parent #352)) (verbatim (:begin 2383 :end 2398 :post-blank 0 :value "docker\nimages" :parent #352)) #(". Push to dockerhub using a command similar to:\n" 0 48 (:parent #352))) (fixed-width (:begin 2447 :end 2494 :value "docker push bonfacekilz/genenetwork2:latest" :post-blank 2 :post-affiliated 2447 :mode nil :granularity nil :parent #348)) (paragraph (:begin 2494 :end 2537 :contents-begin 2494 :contents-end 2536 :post-blank 1 :post-affiliated 2494 :mode nil :granularity nil :parent #348) #("Right now, we have 2 images on DockerHub:\n" 0 42 (:parent #354))) (plain-list (:type unordered :begin 2537 :end 2817 :contents-begin 2537 :contents-end 2817 :structure ((2537 0 "- " nil nil nil 2701) (2701 0 "- " nil nil nil 2817)) :post-blank 0 :post-affiliated 2537 :mode nil :granularity nil :parent #348) (item (:bullet "- " :begin 2537 :end 2701 :contents-begin 2539 :contents-end 2701 :checkbox nil :counter nil :structure ((2537 0 "- " nil nil nil 2701) (2701 0 "- " nil nil nil 2817)) :pre-blank 0 :post-blank 0 :post-affiliated 2537 :tag nil :mode item :granularity nil :parent #355) (paragraph (:begin 2539 :end 2701 :contents-begin 2539 :contents-end 2701 :post-blank 0 :post-affiliated 2539 :mode nil :granularity nil :parent #358) (link (:type "https" :path "//hub.docker.com/repository/docker/bonfacekilz/python2-genenetwork2" :format plain :raw-link "https://hub.docker.com/repository/docker/bonfacekilz/python2-genenetwork2" :application nil :search-option nil :begin 2539 :end 2612 :contents-begin nil :contents-end nil :post-blank 0 :parent #361)) #(":\n Contains the python2 version of gn2. Don't use this. Please use the\n python3 image!\n" 0 89 (:parent #361)))) (item (:bullet "- " :begin 2701 :end 2817 :contents-begin 2703 :contents-end 2817 :checkbox nil :counter nil :structure ((2537 0 "- " nil nil nil 2701) (2701 0 "- " nil nil nil 2817)) :pre-blank 0 :post-blank 0 :post-affiliated 2701 :tag nil :mode item :granularity nil :parent #355) (paragraph (:begin 2703 :end 2817 :contents-begin 2703 :contents-end 2817 :post-blank 0 :post-affiliated 2703 :mode nil :granularity nil :parent #359) (link (:type "https" :path "//hub.docker.com/repository/docker/bonfacekilz/python3-genenetwork2" :format plain :raw-link "https://hub.docker.com/repository/docker/bonfacekilz/python3-genenetwork2" :application nil :search-option nil :begin 2703 :end 2776 :contents-begin nil :contents-end nil :post-blank 0 :parent #362)) #(":\n Contains the python3 version of gn2.\n" 0 41 (:parent #362)))))))) :headline-offset 0 :headline-numbering nil :id-alist nil :citations nil :id-local-cache #)) org-export-as(html nil nil t nil) org-export-to-buffer(html "*Org HTML Export*" nil nil nil t nil #f(compiled-function () #)) org-html-export-as-html(nil nil nil t) (progn (pipe-stdin-into-current-buffer) (org-html-export-as-html nil nil nil t) (princ (buffer-string))) (unwind-protect (progn (pipe-stdin-into-current-buffer) (org-html-export-as-html nil nil nil t) (princ (buffer-string))) (and (buffer-name temp-buffer) (kill-buffer temp-buffer))) (save-current-buffer (set-buffer temp-buffer) (unwind-protect (progn (pipe-stdin-into-current-buffer) (org-html-export-as-html nil nil nil t) (princ (buffer-string))) (and (buffer-name temp-buffer) (kill-buffer temp-buffer)))) (let ((temp-buffer (generate-new-buffer " *temp*" t))) (save-current-buffer (set-buffer temp-buffer) (unwind-protect (progn (pipe-stdin-into-current-buffer) (org-html-export-as-html nil nil nil t) (princ (buffer-string))) (and (buffer-name temp-buffer) (kill-buffer temp-buffer))))) eval-buffer(# nil "/gnu/store/0h55qvzlzmvwgigk6nrzcc6s2g30ddm0-org2html.el" nil t) #f(compiled-function (buffer file) #)(# "/gnu/store/0h55qvzlzmvwgigk6nrzcc6s2g30ddm0-org2html.el") load-with-code-conversion("/gnu/store/0h55qvzlzmvwgigk6nrzcc6s2g30ddm0-org2html.el" "/gnu/store/0h55qvzlzmvwgigk6nrzcc6s2g30ddm0-org2html.el" nil t #f(compiled-function (buffer file) #)) command-line--load-script("/gnu/store/0h55qvzlzmvwgigk6nrzcc6s2g30ddm0-org2html.el") command-line-1(("-scriptload" "/gnu/store/0h55qvzlzmvwgigk6nrzcc6s2g30ddm0-org2html.el")) command-line() normal-top-level()