{
    "componentChunkName": "component---src-templates-post-template-tsx",
    "path": "/20220704/docker_springboot/",
    "result": {"data":{"allMarkdownRemark":{"edges":[{"node":{"html":"<h1>Docker 및 SpringBoot 이용한 이미지 생성 및 배포</h1>\n<h2>1. SpringBoot 소스 코드 생성</h2>\n<div class=\"gatsby-highlight\" data-language=\"java\"><pre class=\"language-java\"><code class=\"language-java\"><span class=\"token keyword\">package</span> <span class=\"token namespace\">com<span class=\"token punctuation\">.</span>docker<span class=\"token punctuation\">.</span>dockertest</span><span class=\"token punctuation\">;</span>\r\n<span class=\"token keyword\">import</span> <span class=\"token import\"><span class=\"token namespace\">org<span class=\"token punctuation\">.</span>springframework<span class=\"token punctuation\">.</span>boot<span class=\"token punctuation\">.</span></span><span class=\"token class-name\">SpringApplication</span></span><span class=\"token punctuation\">;</span>\r\n<span class=\"token keyword\">import</span> <span class=\"token import\"><span class=\"token namespace\">org<span class=\"token punctuation\">.</span>springframework<span class=\"token punctuation\">.</span>boot<span class=\"token punctuation\">.</span>autoconfigure<span class=\"token punctuation\">.</span></span><span class=\"token class-name\">SpringBootApplication</span></span><span class=\"token punctuation\">;</span>\r\n<span class=\"token keyword\">import</span> <span class=\"token import\"><span class=\"token namespace\">org<span class=\"token punctuation\">.</span>springframework<span class=\"token punctuation\">.</span>web<span class=\"token punctuation\">.</span>bind<span class=\"token punctuation\">.</span>annotation<span class=\"token punctuation\">.</span></span><span class=\"token class-name\">GetMapping</span></span><span class=\"token punctuation\">;</span>\r\n<span class=\"token keyword\">import</span> <span class=\"token import\"><span class=\"token namespace\">org<span class=\"token punctuation\">.</span>springframework<span class=\"token punctuation\">.</span>web<span class=\"token punctuation\">.</span>bind<span class=\"token punctuation\">.</span>annotation<span class=\"token punctuation\">.</span></span><span class=\"token class-name\">RestController</span></span><span class=\"token punctuation\">;</span>\r\n<span class=\"token annotation punctuation\">@RestController</span>\r\n<span class=\"token annotation punctuation\">@SpringBootApplication</span>\r\n<span class=\"token keyword\">public</span> <span class=\"token keyword\">class</span> <span class=\"token class-name\">DockertestApplication</span> <span class=\"token punctuation\">{</span>\r\n\t<span class=\"token annotation punctuation\">@GetMapping</span><span class=\"token punctuation\">(</span><span class=\"token string\">\"/\"</span><span class=\"token punctuation\">)</span>\r\n\t<span class=\"token keyword\">public</span> <span class=\"token class-name\">String</span> <span class=\"token function\">test</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span>\r\n\t\t<span class=\"token keyword\">return</span> <span class=\"token string\">\"this is docker test\"</span><span class=\"token punctuation\">;</span>\r\n\t<span class=\"token punctuation\">}</span>\r\n\t<span class=\"token keyword\">public</span> <span class=\"token keyword\">static</span> <span class=\"token keyword\">void</span> <span class=\"token function\">main</span><span class=\"token punctuation\">(</span><span class=\"token class-name\">String</span><span class=\"token punctuation\">[</span><span class=\"token punctuation\">]</span> args<span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span>\r\n\t\t<span class=\"token class-name\">SpringApplication</span><span class=\"token punctuation\">.</span><span class=\"token function\">run</span><span class=\"token punctuation\">(</span><span class=\"token class-name\">DockertestApplication</span><span class=\"token punctuation\">.</span><span class=\"token keyword\">class</span><span class=\"token punctuation\">,</span> args<span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\r\n\t<span class=\"token punctuation\">}</span>\r\n<span class=\"token punctuation\">}</span></code></pre></div>\n<h2>2. 이미지를 만들기 전에 작동하는지 확인하기 위해 jar 파일 생성</h2>\n<div class=\"gatsby-highlight\" data-language=\"powershell\"><pre class=\"language-powershell\"><code class=\"language-powershell\">$ <span class=\"token punctuation\">.</span><span class=\"token operator\">/</span>gradlew build</code></pre></div>\n<p>빌드시 프로젝트 루트 > build > libs에 jar 파일이 생성된다.</p>\n<span class=\"gatsby-resp-image-wrapper\" style=\"position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 486px; \">\n      <a class=\"gatsby-resp-image-link\" href=\"/static/a415f1d38849bfeeda1c9ce731da394e/c42ee/docker_image1.png\" style=\"display: block\" target=\"_blank\" rel=\"noopener\">\n    <span class=\"gatsby-resp-image-background-image\" style=\"padding-bottom: 50.52083333333333%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAKCAYAAAC0VX7mAAAACXBIWXMAAA7DAAAOwwHHb6hkAAABPElEQVQoz5WQ6W7CMBCE82Ilvo84jp0TU0hpK1Uq7/8AUyUhFHqp/Bjt7Mr6NONMGY1+lzC0Ef3Qw1gNpSS00bPXRi3S6uI5ZyCUgDCyTErAOAMTAplUFCkaPG0j2jbAKAp9p5QkKAyH1hIZFxRDMNgPEa40EDyHlBRSkH9LCAKt2dwsC46iLwlODcExeQyNQXQEsaSIji5z9TciFx8cQVsxlIVEVtkc3guc4gNeU4nDY4OmEvA2R1WQea5+Eb2a9LLXnsHZCVgQhJLhGAjGFNAEiS6qGTpp8us+tZnfu0/Yeqs9h7PiDHQMO59jPHTYp4hta9HXBl3USJ3Dti0wNPYGeK3p1szANeG58vPgkAY/P/qt8k/QBXhVuSo53uMGL8lj3HdzwqrIvyX5O+EX4FvYYOws6vNf3aNr4Ae/knPVSrHb2QAAAABJRU5ErkJggg=='); background-size: cover; display: block;\"></span>\n  <picture>\n          <source srcset=\"/static/a415f1d38849bfeeda1c9ce731da394e/a59e9/docker_image1.webp 192w,\n/static/a415f1d38849bfeeda1c9ce731da394e/0ca9f/docker_image1.webp 384w,\n/static/a415f1d38849bfeeda1c9ce731da394e/1fdc0/docker_image1.webp 486w\" sizes=\"(max-width: 486px) 100vw, 486px\" type=\"image/webp\">\n          <source srcset=\"/static/a415f1d38849bfeeda1c9ce731da394e/3b721/docker_image1.png 192w,\n/static/a415f1d38849bfeeda1c9ce731da394e/66595/docker_image1.png 384w,\n/static/a415f1d38849bfeeda1c9ce731da394e/c42ee/docker_image1.png 486w\" sizes=\"(max-width: 486px) 100vw, 486px\" type=\"image/png\">\n          <img class=\"gatsby-resp-image-image\" src=\"/static/a415f1d38849bfeeda1c9ce731da394e/c42ee/docker_image1.png\" alt=\"docker image1\" title=\"docker image1\" loading=\"lazy\" decoding=\"async\" style=\"width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;\">\n        </picture>\n  </a>\n    </span>\n<p>제대로 작동하는지 jar 파일을 실행시켜본다.</p>\n<div class=\"gatsby-highlight\" data-language=\"powershell\"><pre class=\"language-powershell\"><code class=\"language-powershell\">$ java <span class=\"token operator\">-</span>jar dockertest-0<span class=\"token punctuation\">.</span>0<span class=\"token punctuation\">.</span>1-SNAPSHOT<span class=\"token punctuation\">.</span>jar</code></pre></div>\n<p>제대로 작동하는것을 확인하면 도커 이미지를 생성한다. 그러기 위해 먼저 Dockerfile을 생성해야한다.</p>\n<h2>3. Dockerfile 생성</h2>\n<p>.jar 파일이 생성된곳에 Dockerfile을 생성한다.</p>\n<div class=\"gatsby-highlight\" data-language=\"docker\"><pre class=\"language-docker\"><code class=\"language-docker\"><span class=\"token instruction\"><span class=\"token keyword\">FROM</span> openjdk:8</span>\r\n<span class=\"token instruction\"><span class=\"token keyword\">ARG</span> JAR_FILE=*.jar</span>\r\n<span class=\"token instruction\"><span class=\"token keyword\">COPY</span> <span class=\"token variable\">${JAR_FILE}</span> app.jar</span>\r\n<span class=\"token instruction\"><span class=\"token keyword\">ENTRYPOINT</span> [<span class=\"token string\">\"java\"</span>, <span class=\"token string\">\"-jar\"</span>, <span class=\"token string\">\"/app.jar\"</span>]</span></code></pre></div>\n<ul>\n<li>FROM : Docker Base Image</li>\n<li>ARG : Container 내에서 사용할 수 있는 변수 지정 (JAR_FILE 변수에 *.jar 경로를 담음)</li>\n<li>COPY : JAR_FILE 변수를 컨테이너의 app.jar로 복사한다.</li>\n<li>ENTRYPOINT : Container가 실행할 때 수행되는 명령어를 지정</li>\n</ul>\n<h2>4. Dockerfile을 이용해 이미지를 빌드</h2>\n<p>cd 명령어를 통해 jar 파일이 있는 곳으로 터미널 위치를 옮긴후 명령어를 입력해 이미지를 생성한다.</p>\n<div class=\"gatsby-highlight\" data-language=\"powershell\"><pre class=\"language-powershell\"><code class=\"language-powershell\">$ docker build <span class=\"token operator\">-</span>t springboot-docker-test <span class=\"token punctuation\">.</span></code></pre></div>\n<p>. 붙여줘야함!! (해당 경로에 Docker 파일 있음을 명시)</p>\n<span class=\"gatsby-resp-image-wrapper\" style=\"position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 728px; \">\n      <a class=\"gatsby-resp-image-link\" href=\"/static/86b77af3792db3d94780465b1b046877/0b3a5/docker_image2.png\" style=\"display: block\" target=\"_blank\" rel=\"noopener\">\n    <span class=\"gatsby-resp-image-background-image\" style=\"padding-bottom: 42.708333333333336%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAJCAYAAAAywQxIAAAACXBIWXMAAA7DAAAOwwHHb6hkAAAA5UlEQVQoz52SSa7EIAxEuU4GyAw2Q4KSRd//RNWypbT0V53+i5IR4OeywVDawfWFWCqYIwIxfCAQMzYfsKwbiCN669Bb+1WGKKCUjHrskPU8z+i6Dm3b/kvGew9mRoxRYdM8YxxHPRTwrzLEhJyzAp1z6Pse1lrV38vtoyKGiJBSQj0OiFtxuSyL6m69aZoP7BvUbNsGgeaUFLiuK6ZpUrciKSB7g3PPHIq7Ugp20b7jOCpyTgrxISCEgGEYHrlToCTI/MSlJIoriTLLe54/tXyepz5KrVXjdV26piB/cMU9Evew5TcYuhgan9hk/QAAAABJRU5ErkJggg=='); background-size: cover; display: block;\"></span>\n  <picture>\n          <source srcset=\"/static/86b77af3792db3d94780465b1b046877/a59e9/docker_image2.webp 192w,\n/static/86b77af3792db3d94780465b1b046877/0ca9f/docker_image2.webp 384w,\n/static/86b77af3792db3d94780465b1b046877/0692d/docker_image2.webp 728w\" sizes=\"(max-width: 728px) 100vw, 728px\" type=\"image/webp\">\n          <source srcset=\"/static/86b77af3792db3d94780465b1b046877/3b721/docker_image2.png 192w,\n/static/86b77af3792db3d94780465b1b046877/66595/docker_image2.png 384w,\n/static/86b77af3792db3d94780465b1b046877/0b3a5/docker_image2.png 728w\" sizes=\"(max-width: 728px) 100vw, 728px\" type=\"image/png\">\n          <img class=\"gatsby-resp-image-image\" src=\"/static/86b77af3792db3d94780465b1b046877/0b3a5/docker_image2.png\" alt=\"docker image2\" title=\"docker image2\" loading=\"lazy\" decoding=\"async\" style=\"width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;\">\n        </picture>\n  </a>\n    </span>\n<p>위와 같이 나왔다면 성공!</p>\n<h2>5. 빌드된 이미지를 확인한다.</h2>\n<p>해당 명령어를 실행시켜 이미지가 제대로 생성되었는지 확인한다.</p>\n<div class=\"gatsby-highlight\" data-language=\"powershell\"><pre class=\"language-powershell\"><code class=\"language-powershell\">$ docker images</code></pre></div>\n<div class=\"gatsby-highlight\" data-language=\"powershell\"><pre class=\"language-powershell\"><code class=\"language-powershell\">REPOSITORY               TAG                 IMAGE ID            CREATED             SIZE\r\nspringboot-docker-test   latest              4ef630ce6f49        59 seconds ago      544MB\r\nopenjdk                  8                   5bf086edab5e        2 weeks ago         526MB\r\nhello-world              latest              feb5d9fea6a5        8 months ago        13<span class=\"token punctuation\">.</span>3kB</code></pre></div>\n<h2>6. Container 실행.</h2>\n<div class=\"gatsby-highlight\" data-language=\"powershell\"><pre class=\"language-powershell\"><code class=\"language-powershell\">$ docker run <span class=\"token operator\">-</span>p 5000:9999 springboot-docker-test</code></pre></div>\n<span class=\"gatsby-resp-image-wrapper\" style=\"position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 768px; \">\n      <a class=\"gatsby-resp-image-link\" href=\"/static/d1692874856defebacef8c6ab59ab625/024a7/docker_image3.png\" style=\"display: block\" target=\"_blank\" rel=\"noopener\">\n    <span class=\"gatsby-resp-image-background-image\" style=\"padding-bottom: 26.041666666666668%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAFCAYAAABFA8wzAAAACXBIWXMAAA7DAAAOwwHHb6hkAAAAo0lEQVQY042PSw7EIAxDuQ6l5adWhQR6/1t55Eh0MZuZxRMBEjt2OWcsSilIKSHFgBgjUs52P44D27YhhPATt4SWKAe9J/6Fb//izvMEWdtxG55mUIptSpahJVj/OVv/6mHtRAStdbTWsO87Sq1QVQxVzDnRe8d93xhjvDUXoChFGJNzxCKrDnQRa6ZDrdXqMRTzecyIIhSnkUi387ouE/yO/AFm+5wUjgWuMwAAAABJRU5ErkJggg=='); background-size: cover; display: block;\"></span>\n  <picture>\n          <source srcset=\"/static/d1692874856defebacef8c6ab59ab625/a59e9/docker_image3.webp 192w,\n/static/d1692874856defebacef8c6ab59ab625/0ca9f/docker_image3.webp 384w,\n/static/d1692874856defebacef8c6ab59ab625/dc9b9/docker_image3.webp 768w,\n/static/d1692874856defebacef8c6ab59ab625/e2c2f/docker_image3.webp 1152w,\n/static/d1692874856defebacef8c6ab59ab625/f3efb/docker_image3.webp 1536w,\n/static/d1692874856defebacef8c6ab59ab625/9b468/docker_image3.webp 1682w\" sizes=\"(max-width: 768px) 100vw, 768px\" type=\"image/webp\">\n          <source srcset=\"/static/d1692874856defebacef8c6ab59ab625/3b721/docker_image3.png 192w,\n/static/d1692874856defebacef8c6ab59ab625/66595/docker_image3.png 384w,\n/static/d1692874856defebacef8c6ab59ab625/fe486/docker_image3.png 768w,\n/static/d1692874856defebacef8c6ab59ab625/d2d74/docker_image3.png 1152w,\n/static/d1692874856defebacef8c6ab59ab625/e8464/docker_image3.png 1536w,\n/static/d1692874856defebacef8c6ab59ab625/024a7/docker_image3.png 1682w\" sizes=\"(max-width: 768px) 100vw, 768px\" type=\"image/png\">\n          <img class=\"gatsby-resp-image-image\" src=\"/static/d1692874856defebacef8c6ab59ab625/fe486/docker_image3.png\" alt=\"docker image3\" title=\"docker image3\" loading=\"lazy\" decoding=\"async\" style=\"width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;\">\n        </picture>\n  </a>\n    </span>\n<p>docker Container 실행 시에 “-p” 옵션을 추가하여 포트 포워딩을 설정할 수 있다.<br>\r\nex) 5000:9999 -> 호스트 시스템의 5000번 TCP Port로 유입되는 트래픽은 모두 docker Container의 9999 포트로 전달된다.</p>\n<p>아래 명령어를 실행 후 Container가 제대로 가동하고 있는지 확인한다.</p>\n<div class=\"gatsby-highlight\" data-language=\"powershell\"><pre class=\"language-powershell\"><code class=\"language-powershell\">$ docker <span class=\"token function\">ps</span></code></pre></div>\n<span class=\"gatsby-resp-image-wrapper\" style=\"position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 768px; \">\n      <a class=\"gatsby-resp-image-link\" href=\"/static/bd7eef9c55a16d4c7c878d785d0effc1/a4588/docker_image4.png\" style=\"display: block\" target=\"_blank\" rel=\"noopener\">\n    <span class=\"gatsby-resp-image-background-image\" style=\"padding-bottom: 6.770833333333333%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAABCAYAAADeko4lAAAACXBIWXMAAA7DAAAOwwHHb6hkAAAAQUlEQVQI1yXJyxGAIAxAQRsCyQdJCP239ZzR6+5Vdci9edaiqohIVgSRiZoxRJhzMoYgopg7vd+Y+feiv6kqrTVeEUMgLvmR37oAAAAASUVORK5CYII='); background-size: cover; display: block;\"></span>\n  <picture>\n          <source srcset=\"/static/bd7eef9c55a16d4c7c878d785d0effc1/a59e9/docker_image4.webp 192w,\n/static/bd7eef9c55a16d4c7c878d785d0effc1/0ca9f/docker_image4.webp 384w,\n/static/bd7eef9c55a16d4c7c878d785d0effc1/dc9b9/docker_image4.webp 768w,\n/static/bd7eef9c55a16d4c7c878d785d0effc1/e2c2f/docker_image4.webp 1152w,\n/static/bd7eef9c55a16d4c7c878d785d0effc1/88a49/docker_image4.webp 1254w\" sizes=\"(max-width: 768px) 100vw, 768px\" type=\"image/webp\">\n          <source srcset=\"/static/bd7eef9c55a16d4c7c878d785d0effc1/3b721/docker_image4.png 192w,\n/static/bd7eef9c55a16d4c7c878d785d0effc1/66595/docker_image4.png 384w,\n/static/bd7eef9c55a16d4c7c878d785d0effc1/fe486/docker_image4.png 768w,\n/static/bd7eef9c55a16d4c7c878d785d0effc1/d2d74/docker_image4.png 1152w,\n/static/bd7eef9c55a16d4c7c878d785d0effc1/a4588/docker_image4.png 1254w\" sizes=\"(max-width: 768px) 100vw, 768px\" type=\"image/png\">\n          <img class=\"gatsby-resp-image-image\" src=\"/static/bd7eef9c55a16d4c7c878d785d0effc1/fe486/docker_image4.png\" alt=\"docker image4\" title=\"docker image4\" loading=\"lazy\" decoding=\"async\" style=\"width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;\">\n        </picture>\n  </a>\n    </span>\n<p>Container가 가동하고 있는지 확인 후 브라우저에서 <a href=\"http://192.168.99.100:5000/\" target=\"_blank\" rel=\"nofollow\">192.168.99.100:5000</a> 으로 접속하여 제대로 실행되었는지 확인한다.<br>\r\n<ins><b>※</b> docker toolbox인 경우에는 ip주소로 접속해야함. (localhost(x))</ins></p>\n<span class=\"gatsby-resp-image-wrapper\" style=\"position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 768px; \">\n      <a class=\"gatsby-resp-image-link\" href=\"/static/be8ccc02b77d32cd016f011c54449de5/38095/docker_image5.png\" style=\"display: block\" target=\"_blank\" rel=\"noopener\">\n    <span class=\"gatsby-resp-image-background-image\" style=\"padding-bottom: 70.83333333333333%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAOCAYAAAAvxDzwAAAACXBIWXMAAA7DAAAOwwHHb6hkAAAAoElEQVQ4y+3MPw7BUACA8XcDtmo1BptgEH8GF3ADg4lYegoSyTuBxNCHtOxm57AQ0VuIxXvvk3S1NNHB0C/5rZ9oD0b4/QCvF1Bqzig3JjitMX53SqUzx6kPcd0qrlfLRGz2JxbbG8vwgoyuyGOCjO+s4gR5eLCOziilCNUuE0HaC+wTMPyaMNZiLCmtLe8vBq11ZsJaS54EOVcMi+E/DD8TihI9gGSfsAAAAABJRU5ErkJggg=='); background-size: cover; display: block;\"></span>\n  <picture>\n          <source srcset=\"/static/be8ccc02b77d32cd016f011c54449de5/a59e9/docker_image5.webp 192w,\n/static/be8ccc02b77d32cd016f011c54449de5/0ca9f/docker_image5.webp 384w,\n/static/be8ccc02b77d32cd016f011c54449de5/dc9b9/docker_image5.webp 768w,\n/static/be8ccc02b77d32cd016f011c54449de5/8c31b/docker_image5.webp 827w\" sizes=\"(max-width: 768px) 100vw, 768px\" type=\"image/webp\">\n          <source srcset=\"/static/be8ccc02b77d32cd016f011c54449de5/3b721/docker_image5.png 192w,\n/static/be8ccc02b77d32cd016f011c54449de5/66595/docker_image5.png 384w,\n/static/be8ccc02b77d32cd016f011c54449de5/fe486/docker_image5.png 768w,\n/static/be8ccc02b77d32cd016f011c54449de5/38095/docker_image5.png 827w\" sizes=\"(max-width: 768px) 100vw, 768px\" type=\"image/png\">\n          <img class=\"gatsby-resp-image-image\" src=\"/static/be8ccc02b77d32cd016f011c54449de5/fe486/docker_image5.png\" alt=\"docker image5\" title=\"docker image5\" loading=\"lazy\" decoding=\"async\" style=\"width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;\">\n        </picture>\n  </a>\n    </span>\n<p>정상적으로 접속됐다면 성공!!</p>","frontmatter":{"title":"docker 및 springboot 이용한 이미지 생성 및 배포하기","summary":"docker,springboot","date":"2022.07.04.","categories":["DOCKER"],"thumbnail":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAKCAIAAAA7N+mxAAAACXBIWXMAAAsTAAALEwEAmpwYAAABgklEQVQoz5WSTS9DQRSGJ7GTWFnYWfgH/oiVhUhIJPwMLNDEQgiJ1qKI+Eh8JF21bFQa0rhEqy2C3n7Ram+11VvutNM5Z2TuVAgrZzdn3vOec54ZIr4CEQFR/CeIEAJQ0CY0QVZyQA4ti59OKN3/FCMKJX58tQKpqu0lZWBnAeQ48DWUFNsZLkUoO5fe61P+VK8zNOp5EMDjJUttwZWNHYDY4PC7s0lZ3/YtmdDI5Hn3QmjEE+9x3p/oJd2obgT1WLaSr9Jire6LPQce8yZlerFWrNXDT+WCSYlfL5O5dIcr1+XOti3nyVxiXjO0ZHHx+G5sMzjtjcx4Iw5fdEtL9K+cLPnvhtdOB1cDs0ex8keDVCw24MkM+YxOd6HdlRsPvAgh8lXqPosfhNKbWmJbS+xcJPevUruXKU844ziMrgfjumG2aFu0njHe9m5K1zlTCFC0LSZXpowzDowDZVxt3lSsJGYkEgx+vwqzIdnXEpgCy23WTUCujqpadW6xRfznHxGfXVMgnHU+UGkAAAAASUVORK5CYII="},"images":{"fallback":{"src":"/static/3c45951e95e72a308f2ebad8817d83fa/a9f4f/docker.png","srcSet":"/static/3c45951e95e72a308f2ebad8817d83fa/f1df6/docker.png 78w,\n/static/3c45951e95e72a308f2ebad8817d83fa/05334/docker.png 155w,\n/static/3c45951e95e72a308f2ebad8817d83fa/a9f4f/docker.png 310w","sizes":"(min-width: 310px) 310px, 100vw"},"sources":[{"srcSet":"/static/3c45951e95e72a308f2ebad8817d83fa/42371/docker.webp 78w,\n/static/3c45951e95e72a308f2ebad8817d83fa/b8bee/docker.webp 155w,\n/static/3c45951e95e72a308f2ebad8817d83fa/13d77/docker.webp 310w","type":"image/webp","sizes":"(min-width: 310px) 310px, 100vw"}]},"width":310,"height":162}},"publicURL":"/static/3c45951e95e72a308f2ebad8817d83fa/docker.png"}}}}]}},"pageContext":{"slug":"/20220704/docker_springboot/"}},
    "staticQueryHashes": []}