{"id":804,"date":"2021-06-03T21:21:21","date_gmt":"2021-06-04T02:21:21","guid":{"rendered":"https:\/\/jacobncalvert.com\/?p=804"},"modified":"2021-06-03T21:21:22","modified_gmt":"2021-06-04T02:21:22","slug":"docker-builders-for-easy-updates","status":"publish","type":"post","link":"https:\/\/jacobncalvert.com\/blog-archive\/2021\/06\/03\/docker-builders-for-easy-updates\/","title":{"rendered":"Docker Builders for Easy Updates"},"content":{"rendered":"\n<p>One of the most frustrating things for me is when a new version of a software is released with a fix, feature, or otherwise useful addition I&#8217;d like to use, but the package maintainers for my Linux distro haven&#8217;t caught up yet. Some of the packages are so far behind it&#8217;s silly. I recently decided that for software I use regularly, and is updated regularly, I was going to start using a Docker container to build it and keep my machine clear of all the unnecessary dev packages. This serves the other purpose of being able to share the build environment with others. I wanted to drop <a href=\"https:\/\/hub.docker.com\/u\/jacobcalvert\" target=\"_blank\" rel=\"noreferrer noopener\">a link to my DockerHub account here<\/a>, where you can find the images I&#8217;ve built for building software I like to use. Keep an eye on it, I will probably add more as time goes on. <\/p>\n\n\n\n<p>The DockerHub images link back to my GitHub, and I&#8217;m using the auto-build feature so that when I update the Dockerfile and scripts to build the software, it gets rebuilt over at DockerHub automatically.<\/p>\n\n\n\n<p>Here&#8217;s an example of one of the builders for W1HKJ&#8217;s FlDigi software suite. Simply run the container volume mounting in some working directory to \/opt\/source in the container, and the build script finds the latest source, downloads, untars, and builds it, spitting out the results in your working directory.<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: bash; title: ; notranslate\" title=\"\">\njacob@jacob-aspire:\/tmp\/fldigi$ docker run --rm -v $PWD:\/opt\/source jacobcalvert\/fldigi-build:latest \nBuilding fldigi-4.1.18\n--2021-05-26 12:39:39--  http:\/\/www.w1hkj.com\/files\/\/fldigi\/fldigi-4.1.18.tar.gz\nResolving www.w1hkj.com (www.w1hkj.com)... 143.95.246.118\nConnecting to www.w1hkj.com (www.w1hkj.com)|143.95.246.118|:80... connected.\nHTTP request sent, awaiting response... 200 OK\nLength: 4847091 (4.6M) &#91;application\/x-gzip]\nSaving to: 'fldigi-4.1.18.tar.gz'\n\n     0K .......... .......... .......... .......... ..........  1%  736K 6s\n    50K .......... .......... .......... .......... ..........  2% 1.53M 5s\n   100K .......... .......... .......... .......... ..........  3% 2.52M 4s\n   150K .......... .......... .......... .......... ..........  4% 27.7M 3s\n   200K .......... .......... .......... .......... ..........  5% 3.33M 2s\n   250K .......... .......... .......... .......... ..........  6% 2.67M 2s\n   300K .......... .......... .......... .......... ..........  7% 28.3M 2s\n   350K .......... .......... .......... .......... ..........  8% 8.94M 2s\n   400K .......... .......... .......... .......... ..........  9% 9.29M 2s\n   450K .......... .......... .......... .......... .......... 10% 7.04M 1s\n   500K .......... .......... .......... .......... .......... 11% 4.42M 1s\n   550K .......... .......... .......... .......... .......... 12% 8.31M 1s\n\n  &lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt; snipped for brevity &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;\n\nmake&#91;1]: Nothing to be done for 'all-am'.\nmake&#91;1]: Leaving directory '\/opt\/source\/flrig-1.3.54'\nDone!!\njacob@jacob-aspire:\/tmp\/fldigi$ ll\ntotal 11224\ndrwxrwxr-x  5 jacob jacob    4096 May 26 13:05 .\/\ndrwxrwxrwt 18 root  root     4096 May 26 13:05 ..\/\ndrwxr-xr-x  9 jacob jacob    4096 May 26 13:05 fldigi-4.1.18\/\n-rw-r--r--  1 root  root  4847091 Jan 29 06:50 fldigi-4.1.18.tar.gz\n-rw-r--r--  1 root  root  4847091 Jan 29 06:50 fldigi-4.1.18.tar.gz.1\ndrwxrwxr-x  7 jacob jacob    4096 May 26 12:45 flmsg-4.0.17\/\n-rw-r--r--  1 root  root   876560 Sep  8  2020 flmsg-4.0.17.tar.gz\ndrwxr-xr-x  7 jacob jacob    4096 May 26 12:46 flrig-1.3.54\/\n-rw-r--r--  1 root  root   891644 Feb  3 08:35 flrig-1.3.54.tar.gz\n<\/pre><\/div>","protected":false},"excerpt":{"rendered":"<p>One of the most frustrating things for me is when a new version of a software is released with a fix, feature, or otherwise useful addition I&#8217;d like to use, but the package maintainers for my Linux distro haven&#8217;t caught up yet. Some of the packages are so far behind it&#8217;s silly. I recently decided that for software I use regularly, and is updated regularly, I was going to start using a Docker container to build it and keep my&hellip;<\/p>\n","protected":false},"author":1,"featured_media":806,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[137,85,76],"tags":[108,109,135],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v16.4 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Docker Builders for Easy Updates - Jacob N Calvert<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/jacobncalvert.com\/blog-archive\/2021\/06\/03\/docker-builders-for-easy-updates\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Docker Builders for Easy Updates - Jacob N Calvert\" \/>\n<meta property=\"og:description\" content=\"One of the most frustrating things for me is when a new version of a software is released with a fix, feature, or otherwise useful addition I&#8217;d like to use, but the package maintainers for my Linux distro haven&#8217;t caught up yet. Some of the packages are so far behind it&#8217;s silly. I recently decided that for software I use regularly, and is updated regularly, I was going to start using a Docker container to build it and keep my&hellip;\" \/>\n<meta property=\"og:url\" content=\"https:\/\/jacobncalvert.com\/blog-archive\/2021\/06\/03\/docker-builders-for-easy-updates\/\" \/>\n<meta property=\"og:site_name\" content=\"Jacob N Calvert\" \/>\n<meta property=\"article:published_time\" content=\"2021-06-04T02:21:21+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2021-06-04T02:21:22+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/jacobncalvert.com\/wp-content\/uploads\/2021\/06\/pexels-pixabay-207580.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"640\" \/>\n\t<meta property=\"og:image:height\" content=\"479\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data1\" content=\"2 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebSite\",\"@id\":\"https:\/\/jacobncalvert.com\/blog-archive\/#website\",\"url\":\"https:\/\/jacobncalvert.com\/blog-archive\/\",\"name\":\"Jacob N Calvert\",\"description\":\"\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":\"https:\/\/jacobncalvert.com\/blog-archive\/?s={search_term_string}\",\"query-input\":\"required name=search_term_string\"}],\"inLanguage\":\"en-US\"},{\"@type\":\"ImageObject\",\"@id\":\"https:\/\/jacobncalvert.com\/blog-archive\/2021\/06\/03\/docker-builders-for-easy-updates\/#primaryimage\",\"inLanguage\":\"en-US\",\"url\":\"https:\/\/jacobncalvert.com\/blog-archive\/wp-content\/uploads\/2021\/06\/pexels-pixabay-207580.jpg\",\"contentUrl\":\"https:\/\/jacobncalvert.com\/blog-archive\/wp-content\/uploads\/2021\/06\/pexels-pixabay-207580.jpg\",\"width\":640,\"height\":479},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/jacobncalvert.com\/blog-archive\/2021\/06\/03\/docker-builders-for-easy-updates\/#webpage\",\"url\":\"https:\/\/jacobncalvert.com\/blog-archive\/2021\/06\/03\/docker-builders-for-easy-updates\/\",\"name\":\"Docker Builders for Easy Updates - Jacob N Calvert\",\"isPartOf\":{\"@id\":\"https:\/\/jacobncalvert.com\/blog-archive\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/jacobncalvert.com\/blog-archive\/2021\/06\/03\/docker-builders-for-easy-updates\/#primaryimage\"},\"datePublished\":\"2021-06-04T02:21:21+00:00\",\"dateModified\":\"2021-06-04T02:21:22+00:00\",\"author\":{\"@id\":\"https:\/\/jacobncalvert.com\/blog-archive\/#\/schema\/person\/f4b22a996d41bf09ed2bbe22912a8c8a\"},\"breadcrumb\":{\"@id\":\"https:\/\/jacobncalvert.com\/blog-archive\/2021\/06\/03\/docker-builders-for-easy-updates\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/jacobncalvert.com\/blog-archive\/2021\/06\/03\/docker-builders-for-easy-updates\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/jacobncalvert.com\/blog-archive\/2021\/06\/03\/docker-builders-for-easy-updates\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"item\":{\"@type\":\"WebPage\",\"@id\":\"https:\/\/jacobncalvert.com\/blog-archive\/\",\"url\":\"https:\/\/jacobncalvert.com\/blog-archive\/\",\"name\":\"Home\"}},{\"@type\":\"ListItem\",\"position\":2,\"item\":{\"@id\":\"https:\/\/jacobncalvert.com\/blog-archive\/2021\/06\/03\/docker-builders-for-easy-updates\/#webpage\"}}]},{\"@type\":\"Person\",\"@id\":\"https:\/\/jacobncalvert.com\/blog-archive\/#\/schema\/person\/f4b22a996d41bf09ed2bbe22912a8c8a\",\"name\":\"Jacob\",\"image\":{\"@type\":\"ImageObject\",\"@id\":\"https:\/\/jacobncalvert.com\/blog-archive\/#personlogo\",\"inLanguage\":\"en-US\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/64a2dd1c00cb39dfc19bb1204c87efbc?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/64a2dd1c00cb39dfc19bb1204c87efbc?s=96&d=mm&r=g\",\"caption\":\"Jacob\"},\"sameAs\":[\"https:\/\/jacobncalvert.com\"],\"url\":\"https:\/\/jacobncalvert.com\/blog-archive\/author\/jcalvert\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","_links":{"self":[{"href":"https:\/\/jacobncalvert.com\/blog-archive\/wp-json\/wp\/v2\/posts\/804"}],"collection":[{"href":"https:\/\/jacobncalvert.com\/blog-archive\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/jacobncalvert.com\/blog-archive\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/jacobncalvert.com\/blog-archive\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/jacobncalvert.com\/blog-archive\/wp-json\/wp\/v2\/comments?post=804"}],"version-history":[{"count":3,"href":"https:\/\/jacobncalvert.com\/blog-archive\/wp-json\/wp\/v2\/posts\/804\/revisions"}],"predecessor-version":[{"id":808,"href":"https:\/\/jacobncalvert.com\/blog-archive\/wp-json\/wp\/v2\/posts\/804\/revisions\/808"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/jacobncalvert.com\/blog-archive\/wp-json\/wp\/v2\/media\/806"}],"wp:attachment":[{"href":"https:\/\/jacobncalvert.com\/blog-archive\/wp-json\/wp\/v2\/media?parent=804"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/jacobncalvert.com\/blog-archive\/wp-json\/wp\/v2\/categories?post=804"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/jacobncalvert.com\/blog-archive\/wp-json\/wp\/v2\/tags?post=804"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}