forked from itwanger/toBeBetterJavaer
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathdocker.html
More file actions
109 lines (104 loc) · 52.8 KB
/
docker.html
File metadata and controls
109 lines (104 loc) · 52.8 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
<!DOCTYPE html>
<html lang="zh-CN" data-theme="light">
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width,initial-scale=1" />
<meta name="generator" content="VuePress 2.0.0-beta.46" />
<meta name="theme" content="VuePress Theme Hope" />
<meta property="og:url" content="https://tobebetterjavaer.com/springboot/docker.html"><meta property="og:site_name" content="Java 程序员进阶之路"><meta property="og:title" content="一键部署 Spring Boot 到远程 Docker 容器"><meta property="og:type" content="article"><meta property="og:updated_time" content="2022-06-13T03:52:55.000Z"><meta property="og:locale" content="zh-CN"><meta property="article:tag" content="Spring Boot"><meta property="article:modified_time" content="2022-06-13T03:52:55.000Z"><script>
var _hmt = _hmt || [];
(function() {
var hm = document.createElement("script");
hm.src = "https://hm.baidu.com/hm.js?5230ac143650bf5eb3c14f3fb9b1d3ec";
var s = document.getElementsByTagName("script")[0];
s.parentNode.insertBefore(hm, s);
})();
</script><link rel="stylesheet" href="//at.alicdn.com/t/font_3180624_7cy10l7jqqh.css"><link rel="icon" href="/favicon.ico"><link rel="icon" href="/assets/icon/chrome-mask-512.png" type="image/png" sizes="512x512"><link rel="icon" href="/assets/icon/chrome-mask-192.png" type="image/png" sizes="192x192"><link rel="icon" href="/assets/icon/chrome-512.png" type="image/png" sizes="512x512"><link rel="icon" href="/assets/icon/chrome-192.png" type="image/png" sizes="192x192"><link rel="manifest" href="/manifest.webmanifest" crossorigin="use-credentials"><meta name="theme-color" content="#46bd87"><link rel="apple-touch-icon" href="/assets/icon/apple-icon-152.png"><meta name="apple-mobile-web-app-capable" content="yes"><meta name="apple-mobile-web-app-status-bar-style" content="black"><meta name="msapplication-TileImage" content="/assets/icon/ms-icon-144.png"><meta name="msapplication-TileColor" content="#ffffff"><meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no, viewport-fit=cover"><title>一键部署 Spring Boot 到远程 Docker 容器 | Java 程序员进阶之路</title><meta name="description" content="一份通俗易懂、风趣幽默的Java学习指南,内容涵盖Java基础、Java并发编程、Java虚拟机、Java企业级开发、Java面试等核心知识点。学Java,就认准Java程序员进阶之路">
<style>
:root {
--bg-color: #fff;
}
html[data-theme="dark"] {
--bg-color: #1d2025;
}
html,
body {
background-color: var(--bg-color);
}
</style>
<script>
const userMode = localStorage.getItem("vuepress-theme-hope-scheme");
const systemDarkMode =
window.matchMedia &&
window.matchMedia("(prefers-color-scheme: dark)").matches;
if (userMode === "dark" || (userMode !== "light" && systemDarkMode)) {
document.querySelector("html").setAttribute("data-theme", "dark");
}
</script>
<link rel="stylesheet" href="/assets/style.c081fa20.css">
<link rel="modulepreload" href="/assets/app.41bad062.js"><link rel="modulepreload" href="/assets/docker.html.c47133fb.js"><link rel="modulepreload" href="/assets/plugin-vue_export-helper.21dcd24c.js"><link rel="modulepreload" href="/assets/docker.html.45c42596.js">
</head>
<body>
<div id="app"><!--[--><!--[--><!--[--><span tabindex="-1"></span><a href="#main-content" class="skip-link sr-only">Skip to content</a><!--]--><div class="theme-container has-toc"><!--[--><!--[--><header class="navbar"><div class="navbar-left"><button class="toggle-sidebar-button" title="Toggle Sidebar"><span class="icon"></span></button><!----><a href="/" class="brand"><img class="logo" src="http://cdn.tobebetterjavaer.com/tobebetterjavaer/images/logo-02.png" alt="Java 程序员进阶之路"><!----><span class="site-name hide-in-pad">Java 程序员进阶之路</span></a><!----></div><div class="navbar-center"><!----><nav class="nav-links"><div class="nav-item hide-in-mobile"><a href="/blog.html" class="nav-link" aria-label="博客"><span class="icon iconfont icon-gaishu" style=""></span>博客<!----></a></div><div class="nav-item hide-in-mobile"><a href="/home.html" class="nav-link" aria-label="进阶之路"><span class="icon iconfont icon-lujing" style=""></span>进阶之路<!----></a></div><div class="nav-item hide-in-mobile"><a href="/zhishixingqiu/" class="nav-link" aria-label="知识星球"><span class="icon iconfont icon-Artboard" style=""></span>知识星球<!----></a></div><div class="nav-item hide-in-mobile"><a href="/xuexiluxian/" class="nav-link" aria-label="学习路线"><span class="icon iconfont icon-luxian" style=""></span>学习路线<!----></a></div><div class="nav-item hide-in-mobile"><div class="dropdown-wrapper"><button class="dropdown-title" type="button" aria-label="珍藏资源"><span class="title"><span class="icon iconfont icon-youzhi" style=""></span>珍藏资源</span><span class="arrow"></span><ul class="nav-dropdown"><li class="dropdown-item"><a href="/download/java.html" class="nav-link" aria-label="电子书下载"><span class="icon iconfont icon-java" style=""></span>电子书下载<!----></a></li><li class="dropdown-item"><a href="/sidebar/sanfene/nixi.html" class="nav-link" aria-label="面渣逆袭"><span class="icon iconfont icon-zhunbei" style=""></span>面渣逆袭<!----></a></li><li class="dropdown-item"><a href="/download/nicearticle.html" class="nav-link" aria-label="优质文章"><span class="icon iconfont icon-youzhi" style=""></span>优质文章<!----></a></li><li class="dropdown-item"><a href="/download/history.html" class="nav-link" aria-label="网络日志"><span class="icon iconfont icon-rizhi" style=""></span>网络日志<!----></a></li><li class="dropdown-item"><a href="/nice-article/itmind/" class="nav-link" aria-label="破解合集"><span class="icon iconfont icon-zhongyaotishi" style=""></span>破解合集<!----></a></li></ul></button></div></div><div class="nav-item hide-in-mobile"><a href="https://space.bilibili.com/513340480" rel="noopener noreferrer" target="_blank" aria-label="B站视频" class="nav-link"><span class="icon iconfont icon-bzhan" style=""></span>B站视频<span><svg class="external-link-icon" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewbox="0 0 100 100" width="15" height="15"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg><span class="external-link-icon-sr-only">open in new window</span></span><!----></a></div></nav><!----></div><div class="navbar-right"><!----><div class="nav-item"><!----></div><div class="nav-item"><a class="repo-link" href="https://github.com/itwanger/toBeBetterJavaer" target="_blank" rel="noopener noreferrer"><svg xmlns="http://www.w3.org/2000/svg" class="icon github-icon" viewbox="0 0 1024 1024" fill="currentColor" aria-label="github icon" style="width:1.25rem;height:1.25rem;vertical-align:middle;"><path d="M511.957 21.333C241.024 21.333 21.333 240.981 21.333 512c0 216.832 140.544 400.725 335.574 465.664 24.49 4.395 32.256-10.07 32.256-23.083 0-11.69.256-44.245 0-85.205-136.448 29.61-164.736-64.64-164.736-64.64-22.315-56.704-54.4-71.765-54.4-71.765-44.587-30.464 3.285-29.824 3.285-29.824 49.195 3.413 75.179 50.517 75.179 50.517 43.776 75.008 114.816 53.333 142.762 40.79 4.523-31.66 17.152-53.377 31.19-65.537-108.971-12.458-223.488-54.485-223.488-242.602 0-53.547 19.114-97.323 50.517-131.67-5.035-12.33-21.93-62.293 4.779-129.834 0 0 41.258-13.184 134.912 50.346a469.803 469.803 0 0 1 122.88-16.554c41.642.213 83.626 5.632 122.88 16.554 93.653-63.488 134.784-50.346 134.784-50.346 26.752 67.541 9.898 117.504 4.864 129.834 31.402 34.347 50.474 78.123 50.474 131.67 0 188.586-114.73 230.016-224.042 242.09 17.578 15.232 33.578 44.672 33.578 90.454v135.85c0 13.142 7.936 27.606 32.854 22.87C862.25 912.597 1002.667 728.747 1002.667 512c0-271.019-219.648-490.667-490.71-490.667z"></path></svg></a></div><div class="nav-item hide-in-mobile"><button id="appearance-switch"><svg xmlns="http://www.w3.org/2000/svg" class="icon auto-icon" viewbox="0 0 1024 1024" fill="currentColor" aria-label="auto icon" style="display:block;"><path d="M512 992C246.92 992 32 777.08 32 512S246.92 32 512 32s480 214.92 480 480-214.92 480-480 480zm0-840c-198.78 0-360 161.22-360 360 0 198.84 161.22 360 360 360s360-161.16 360-360c0-198.78-161.22-360-360-360zm0 660V212c165.72 0 300 134.34 300 300 0 165.72-134.28 300-300 300z"></path></svg><svg xmlns="http://www.w3.org/2000/svg" class="icon dark-icon" viewbox="0 0 1024 1024" fill="currentColor" aria-label="dark icon" style="display:none;"><path d="M524.8 938.667h-4.267a439.893 439.893 0 0 1-313.173-134.4 446.293 446.293 0 0 1-11.093-597.334A432.213 432.213 0 0 1 366.933 90.027a42.667 42.667 0 0 1 45.227 9.386 42.667 42.667 0 0 1 10.24 42.667 358.4 358.4 0 0 0 82.773 375.893 361.387 361.387 0 0 0 376.747 82.774 42.667 42.667 0 0 1 54.187 55.04 433.493 433.493 0 0 1-99.84 154.88 438.613 438.613 0 0 1-311.467 128z"></path></svg><svg xmlns="http://www.w3.org/2000/svg" class="icon light-icon" viewbox="0 0 1024 1024" fill="currentColor" aria-label="light icon" style="display:none;"><path d="M952 552h-80a40 40 0 0 1 0-80h80a40 40 0 0 1 0 80zM801.88 280.08a41 41 0 0 1-57.96-57.96l57.96-58a41.04 41.04 0 0 1 58 58l-58 57.96zM512 752a240 240 0 1 1 0-480 240 240 0 0 1 0 480zm0-560a40 40 0 0 1-40-40V72a40 40 0 0 1 80 0v80a40 40 0 0 1-40 40zm-289.88 88.08-58-57.96a41.04 41.04 0 0 1 58-58l57.96 58a41 41 0 0 1-57.96 57.96zM192 512a40 40 0 0 1-40 40H72a40 40 0 0 1 0-80h80a40 40 0 0 1 40 40zm30.12 231.92a41 41 0 0 1 57.96 57.96l-57.96 58a41.04 41.04 0 0 1-58-58l58-57.96zM512 832a40 40 0 0 1 40 40v80a40 40 0 0 1-80 0v-80a40 40 0 0 1 40-40zm289.88-88.08 58 57.96a41.04 41.04 0 0 1-58 58l-57.96-58a41 41 0 0 1 57.96-57.96z"></path></svg></button></div><div id="docsearch-container"></div><!----><button class="toggle-navbar-button" aria-label="Toggle Navbar" aria-expanded="false" aria-controls="nav-screen"><span class="button-container"><span class="button-top"></span><span class="button-middle"></span><span class="button-bottom"></span></span></button></div></header><!----><!--]--><!----><div class="toggle-sidebar-wrapper"><span class="arrow left"></span></div><aside class="sidebar"><!--[--><!----><!--]--><ul class="sidebar-links"><li><!--[--><a href="/home.html" class="nav-link sidebar-link sidebar-page" aria-label="一、前言"><!---->一、前言<!----></a><ul class="sidebar-sub-headers"></ul><!--]--></li><li><!--[--><section class="sidebar-group"><button class="sidebar-heading clickable"><!----><span class="title">二、Java核心</span><span class="arrow right"></span></button><!----></section><!--]--></li><li><!--[--><section class="sidebar-group"><button class="sidebar-heading clickable active"><!----><span class="title">三、Java企业级开发</span><span class="arrow down"></span></button><ul class="sidebar-links"><li><!--[--><section class="sidebar-group"><button class="sidebar-heading clickable"><!----><span class="title">3.1 开发工具</span><span class="arrow right"></span></button><!----></section><!--]--></li><li><!--[--><section class="sidebar-group"><button class="sidebar-heading clickable"><!----><span class="title">3.2 IDE/编辑器</span><span class="arrow right"></span></button><!----></section><!--]--></li><li><!--[--><section class="sidebar-group"><button class="sidebar-heading clickable"><!----><span class="title">3.3 Spring</span><span class="arrow right"></span></button><!----></section><!--]--></li><li><!--[--><section class="sidebar-group"><button class="sidebar-heading clickable active"><!----><span class="title">3.4 SpringBoot</span><span class="arrow down"></span></button><ul class="sidebar-links"><li><!--[--><a href="/springboot/initializr.html" class="nav-link sidebar-link sidebar-page" aria-label="搭建第一个Spring Boot项目"><!---->搭建第一个Spring Boot项目<!----></a><ul class="sidebar-sub-headers"></ul><!--]--></li><li><!--[--><a href="/springboot/mysql-druid.html" class="nav-link sidebar-link sidebar-page" aria-label="整合MySQL和Druid"><!---->整合MySQL和Druid<!----></a><ul class="sidebar-sub-headers"></ul><!--]--></li><li><!--[--><a href="/springboot/jpa.html" class="nav-link sidebar-link sidebar-page" aria-label="整合JPA"><!---->整合JPA<!----></a><ul class="sidebar-sub-headers"></ul><!--]--></li><li><!--[--><a href="/springboot/thymeleaf.html" class="nav-link sidebar-link sidebar-page" aria-label="整合Thymeleaf"><!---->整合Thymeleaf<!----></a><ul class="sidebar-sub-headers"></ul><!--]--></li><li><!--[--><a href="/springboot/transaction.html" class="nav-link sidebar-link sidebar-page" aria-label="开启事务支持"><!---->开启事务支持<!----></a><ul class="sidebar-sub-headers"></ul><!--]--></li><li><!--[--><a href="/springboot/Filter-Interceptor-Listener.html" class="nav-link sidebar-link sidebar-page" aria-label="过滤器、拦截器、监听器"><!---->过滤器、拦截器、监听器<!----></a><ul class="sidebar-sub-headers"></ul><!--]--></li><li><!--[--><a href="/redis/redis-springboot.html" class="nav-link sidebar-link sidebar-page" aria-label="整合Redis实现缓存"><!---->整合Redis实现缓存<!----></a><ul class="sidebar-sub-headers"></ul><!--]--></li><li><!--[--><a href="/springboot/logback.html" class="nav-link sidebar-link sidebar-page" aria-label="整合Logback"><!---->整合Logback<!----></a><ul class="sidebar-sub-headers"></ul><!--]--></li><li><!--[--><a href="/springboot/swagger.html" class="nav-link sidebar-link sidebar-page" aria-label="整合Swagger-UI"><!---->整合Swagger-UI<!----></a><ul class="sidebar-sub-headers"></ul><!--]--></li><li><!--[--><a href="/gongju/knife4j.html" class="nav-link sidebar-link sidebar-page" aria-label="整合Knife4j"><!---->整合Knife4j<!----></a><ul class="sidebar-sub-headers"></ul><!--]--></li><li><!--[--><a href="/springboot/springtask.html" class="nav-link sidebar-link sidebar-page" aria-label="整合SpringTask"><!---->整合SpringTask<!----></a><ul class="sidebar-sub-headers"></ul><!--]--></li><li><!--[--><a href="/kaiyuan/auto-generator.html" class="nav-link sidebar-link sidebar-page" aria-label="整合MyBatis-Plus AutoGenerator"><!---->整合MyBatis-Plus AutoGenerator<!----></a><ul class="sidebar-sub-headers"></ul><!--]--></li><li><!--[--><a href="/springboot/quartz.html" class="nav-link sidebar-link sidebar-page" aria-label="整合Quartz"><!---->整合Quartz<!----></a><ul class="sidebar-sub-headers"></ul><!--]--></li><li><!--[--><a href="/springboot/mybatis.html" class="nav-link sidebar-link sidebar-page" aria-label="整合MyBatis"><!---->整合MyBatis<!----></a><ul class="sidebar-sub-headers"></ul><!--]--></li><li><!--[--><a aria-current="page" href="/springboot/docker.html" class="router-link-active router-link-exact-active nav-link active sidebar-link sidebar-page active" aria-label="部署SpringBoot到Docker"><!---->部署SpringBoot到Docker<!----></a><ul class="sidebar-sub-headers"><li class="sidebar-sub-header"><a aria-current="page" href="/springboot/docker.html#关于-docker" class="router-link-active router-link-exact-active nav-link sidebar-link heading" aria-label="关于 Docker"><!---->关于 Docker<!----></a><ul class="sidebar-sub-headers"></ul></li><li class="sidebar-sub-header"><a aria-current="page" href="/springboot/docker.html#安装-docker" class="router-link-active router-link-exact-active nav-link sidebar-link heading" aria-label="安装 Docker"><!---->安装 Docker<!----></a><ul class="sidebar-sub-headers"></ul></li><li class="sidebar-sub-header"><a aria-current="page" href="/springboot/docker.html#开启-docker-远程访问权限" class="router-link-active router-link-exact-active nav-link sidebar-link heading" aria-label="开启 Docker 远程访问权限"><!---->开启 Docker 远程访问权限<!----></a><ul class="sidebar-sub-headers"></ul></li><li class="sidebar-sub-header"><a aria-current="page" href="/springboot/docker.html#使用-docker-部署-spring-boot" class="router-link-active router-link-exact-active nav-link sidebar-link heading" aria-label="使用 Docker 部署 Spring Boot"><!---->使用 Docker 部署 Spring Boot<!----></a><ul class="sidebar-sub-headers"></ul></li><li class="sidebar-sub-header"><a aria-current="page" href="/springboot/docker.html#intellij-idea-直连-docker" class="router-link-active router-link-exact-active nav-link sidebar-link heading" aria-label="Intellij IDEA 直连 Docker"><!---->Intellij IDEA 直连 Docker<!----></a><ul class="sidebar-sub-headers"></ul></li><li class="sidebar-sub-header"><a aria-current="page" href="/springboot/docker.html#源码路径" class="router-link-active router-link-exact-active nav-link sidebar-link heading" aria-label="源码路径:"><!---->源码路径:<!----></a><ul class="sidebar-sub-headers"></ul></li></ul><!--]--></li><li><!--[--><a href="/springboot/macos-codingmore-run.html" class="nav-link sidebar-link sidebar-page" aria-label="macOS下如何运行编程喵源码"><!---->macOS下如何运行编程喵源码<!----></a><ul class="sidebar-sub-headers"></ul><!--]--></li><li><!--[--><a href="/springboot/windows-codingmore-run.html" class="nav-link sidebar-link sidebar-page" aria-label="Windows下如何运行编程喵源码"><!---->Windows下如何运行编程喵源码<!----></a><ul class="sidebar-sub-headers"></ul><!--]--></li><li><!--[--><a href="/springboot/linux-codingmore-run.html" class="nav-link sidebar-link sidebar-page" aria-label="一键部署编程喵到生产环境"><!---->一键部署编程喵到生产环境<!----></a><ul class="sidebar-sub-headers"></ul><!--]--></li><li><!--[--><a href="/springboot/validator.html" class="nav-link sidebar-link sidebar-page" aria-label="SpringBoot中如何处理校验逻辑"><!---->SpringBoot中如何处理校验逻辑<!----></a><ul class="sidebar-sub-headers"></ul><!--]--></li></ul></section><!--]--></li><li><!--[--><section class="sidebar-group"><button class="sidebar-heading clickable"><!----><span class="title">3.5 辅助工具</span><span class="arrow right"></span></button><!----></section><!--]--></li><li><!--[--><section class="sidebar-group"><button class="sidebar-heading clickable"><!----><span class="title">3.6 开源轮子</span><span class="arrow right"></span></button><!----></section><!--]--></li><li><!--[--><section class="sidebar-group"><button class="sidebar-heading clickable"><!----><span class="title">3.7 分布式</span><span class="arrow right"></span></button><!----></section><!--]--></li><li><!--[--><section class="sidebar-group"><button class="sidebar-heading clickable"><!----><span class="title">3.8 消息队列</span><span class="arrow right"></span></button><!----></section><!--]--></li></ul></section><!--]--></li><li><!--[--><section class="sidebar-group"><button class="sidebar-heading clickable"><!----><span class="title">四、数据库</span><span class="arrow right"></span></button><!----></section><!--]--></li><li><!--[--><section class="sidebar-group"><button class="sidebar-heading clickable"><!----><span class="title">五、计算机基础</span><span class="arrow right"></span></button><!----></section><!--]--></li><li><!--[--><section class="sidebar-group"><button class="sidebar-heading clickable"><!----><span class="title">六、求职面试</span><span class="arrow right"></span></button><!----></section><!--]--></li><li><!--[--><section class="sidebar-group"><button class="sidebar-heading clickable"><!----><span class="title">七、学习资源</span><span class="arrow right"></span></button><!----></section><!--]--></li><li><!--[--><section class="sidebar-group"><button class="sidebar-heading clickable"><!----><span class="title">八、学习建议</span><span class="arrow right"></span></button><!----></section><!--]--></li><li><!--[--><section class="sidebar-group"><button class="sidebar-heading clickable"><!----><span class="title">九、知识库搭建</span><span class="arrow right"></span></button><!----></section><!--]--></li><li><!--[--><section class="sidebar-group"><button class="sidebar-heading clickable"><!----><span class="title">十、联系作者</span><span class="arrow right"></span></button><!----></section><!--]--></li></ul><!--[--><!----><!--]--></aside><!--[--><main class="page" id="main-content"><!--[--><!----><nav class="breadcrumb disable"></nav><div class="page-title"><h1><!---->一键部署 Spring Boot 到远程 Docker 容器</h1><div class="page-info"><span class="author-info" aria-label="作者🖊" data-balloon-pos="down" isoriginal="false" pageview="false"><svg xmlns="http://www.w3.org/2000/svg" class="icon author-icon" viewbox="0 0 1024 1024" fill="currentColor" aria-label="author icon"><path d="M649.6 633.6c86.4-48 147.2-144 147.2-249.6 0-160-128-288-288-288s-288 128-288 288c0 108.8 57.6 201.6 147.2 249.6-121.6 48-214.4 153.6-240 288-3.2 9.6 0 19.2 6.4 25.6 3.2 9.6 12.8 12.8 22.4 12.8h704c9.6 0 19.2-3.2 25.6-12.8 6.4-6.4 9.6-16 6.4-25.6-25.6-134.4-121.6-240-243.2-288z"></path></svg><span><a class="author-item" href="/about-the-author/" target="_blank" rel="noopener noreferrer">沉默王二</a></span><span property="author" content="沉默王二"></span></span><!----><span class="date-info" aria-label="写作日期📅" data-balloon-pos="down" isoriginal="false" pageview="false"><svg xmlns="http://www.w3.org/2000/svg" class="icon calendar-icon" viewbox="0 0 1024 1024" fill="currentColor" aria-label="calendar icon"><path d="M716.4 110.137c0-18.753-14.72-33.473-33.472-33.473-18.753 0-33.473 14.72-33.473 33.473v33.473h66.993v-33.473zm-334.87 0c0-18.753-14.72-33.473-33.473-33.473s-33.52 14.72-33.52 33.473v33.473h66.993v-33.473zm468.81 33.52H716.4v100.465c0 18.753-14.72 33.473-33.472 33.473a33.145 33.145 0 01-33.473-33.473V143.657H381.53v100.465c0 18.753-14.72 33.473-33.473 33.473a33.145 33.145 0 01-33.473-33.473V143.657H180.6A134.314 134.314 0 0046.66 277.595v535.756A134.314 134.314 0 00180.6 947.289h669.74a134.36 134.36 0 00133.94-133.938V277.595a134.314 134.314 0 00-133.94-133.938zm33.473 267.877H147.126a33.145 33.145 0 01-33.473-33.473c0-18.752 14.72-33.473 33.473-33.473h736.687c18.752 0 33.472 14.72 33.472 33.473a33.145 33.145 0 01-33.472 33.473z"></path></svg><span>2022年6月13日</span><meta property="datePublished" content="2022-06-13T03:52:55.000Z"></span><span class="category-info" aria-label="分类🌈" data-balloon-pos="down" isoriginal="false" pageview="false"><svg xmlns="http://www.w3.org/2000/svg" class="icon category-icon" viewbox="0 0 1024 1024" fill="currentColor" aria-label="category icon"><path d="M148.41 106.992h282.176c22.263 0 40.31 18.048 40.31 40.31V429.48c0 22.263-18.047 40.31-40.31 40.31H148.41c-22.263 0-40.311-18.047-40.311-40.31V147.302c0-22.263 18.048-40.31 40.311-40.31zM147.556 553.478H429.73c22.263 0 40.311 18.048 40.311 40.31v282.176c0 22.263-18.048 40.312-40.31 40.312H147.555c-22.263 0-40.311-18.049-40.311-40.312V593.79c0-22.263 18.048-40.311 40.31-40.311zM593.927 106.992h282.176c22.263 0 40.31 18.048 40.31 40.31V429.48c0 22.263-18.047 40.31-40.31 40.31H593.927c-22.263 0-40.311-18.047-40.311-40.31V147.302c0-22.263 18.048-40.31 40.31-40.31zM730.22 920.502H623.926c-40.925 0-74.22-33.388-74.22-74.425V623.992c0-41.038 33.387-74.424 74.425-74.424h222.085c41.038 0 74.424 33.226 74.424 74.067v114.233c0 10.244-8.304 18.548-18.547 18.548s-18.548-8.304-18.548-18.548V623.635c0-20.388-16.746-36.974-37.33-36.974H624.13c-20.585 0-37.331 16.747-37.331 37.33v222.086c0 20.585 16.654 37.331 37.126 37.331H730.22c10.243 0 18.547 8.304 18.547 18.547 0 10.244-8.304 18.547-18.547 18.547z"></path></svg><ul class="categories-wrapper"><li class="category category5 clickable" role="navigation">Java企业级开发</li><meta property="articleSection" content="Java企业级开发"></ul></span><span aria-label="标签🏷" data-balloon-pos="down" isoriginal="false" pageview="false"><svg xmlns="http://www.w3.org/2000/svg" class="icon tag-icon" viewbox="0 0 1024 1024" fill="currentColor" aria-label="tag icon"><path d="M939.902 458.563L910.17 144.567c-1.507-16.272-14.465-29.13-30.737-30.737L565.438 84.098h-.402c-3.215 0-5.726 1.005-7.634 2.913l-470.39 470.39a10.004 10.004 0 000 14.164l365.423 365.424c1.909 1.908 4.42 2.913 7.132 2.913s5.223-1.005 7.132-2.913l470.39-470.39c2.01-2.11 3.014-5.023 2.813-8.036zm-240.067-72.121c-35.458 0-64.286-28.828-64.286-64.286s28.828-64.285 64.286-64.285 64.286 28.828 64.286 64.285-28.829 64.286-64.286 64.286z"></path></svg><ul class="tags-wrapper"><li class="tag tag1 clickable" role="navigation">Spring Boot</li></ul><meta property="keywords" content="Spring Boot"></span><span class="reading-time-info" aria-label="阅读时间⌛" data-balloon-pos="down" isoriginal="false" pageview="false"><svg xmlns="http://www.w3.org/2000/svg" class="icon timer-icon" viewbox="0 0 1024 1024" fill="currentColor" aria-label="timer icon"><path d="M799.387 122.15c4.402-2.978 7.38-7.897 7.38-13.463v-1.165c0-8.933-7.38-16.312-16.312-16.312H256.33c-8.933 0-16.311 7.38-16.311 16.312v1.165c0 5.825 2.977 10.874 7.637 13.592 4.143 194.44 97.22 354.963 220.201 392.763-122.204 37.542-214.893 196.511-220.2 389.397-4.661 5.049-7.638 11.651-7.638 19.03v5.825h566.49v-5.825c0-7.379-2.849-13.981-7.509-18.9-5.049-193.016-97.867-351.985-220.2-389.527 123.24-37.67 216.446-198.453 220.588-392.892zM531.16 450.445v352.632c117.674 1.553 211.787 40.778 211.787 88.676H304.097c0-48.286 95.149-87.382 213.728-88.676V450.445c-93.077-3.107-167.901-81.297-167.901-177.093 0-8.803 6.99-15.793 15.793-15.793 8.803 0 15.794 6.99 15.794 15.793 0 80.261 63.69 145.635 142.01 145.635s142.011-65.374 142.011-145.635c0-8.803 6.99-15.793 15.794-15.793s15.793 6.99 15.793 15.793c0 95.019-73.789 172.82-165.96 177.093z"></path></svg><span>大约 8 分钟</span><meta property="timeRequired" content="PT8M"></span></div><hr></div><div class="toc-place-holder"><aside id="toc"><div class="toc-header">此页内容</div><div class="toc-wrapper"><ul class="toc-list"><!--[--><li class="toc-item"><a aria-current="page" href="/springboot/docker.html#关于-docker" class="router-link-active router-link-exact-active toc-link level3">关于 Docker</a></li><!----><!--]--><!--[--><li class="toc-item"><a aria-current="page" href="/springboot/docker.html#安装-docker" class="router-link-active router-link-exact-active toc-link level3">安装 Docker</a></li><!----><!--]--><!--[--><li class="toc-item"><a aria-current="page" href="/springboot/docker.html#开启-docker-远程访问权限" class="router-link-active router-link-exact-active toc-link level3">开启 Docker 远程访问权限</a></li><!----><!--]--><!--[--><li class="toc-item"><a aria-current="page" href="/springboot/docker.html#使用-docker-部署-spring-boot" class="router-link-active router-link-exact-active toc-link level3">使用 Docker 部署 Spring Boot</a></li><!----><!--]--><!--[--><li class="toc-item"><a aria-current="page" href="/springboot/docker.html#intellij-idea-直连-docker" class="router-link-active router-link-exact-active toc-link level3">Intellij IDEA 直连 Docker</a></li><!----><!--]--><!--[--><li class="toc-item"><a aria-current="page" href="/springboot/docker.html#源码路径" class="router-link-active router-link-exact-active toc-link level3">源码路径:</a></li><!----><!--]--></ul></div></aside></div><!----><div class="theme-hope-content"><h3 id="关于-docker" tabindex="-1"><a class="header-anchor" href="#关于-docker" aria-hidden="true">#</a> 关于 Docker</h3><p>Docker 是用 go 语言编写的,这也是 go 语言近些年越来越火的原因之一。关于 Docker,有 3 个重要的概念需要了解下:</p><ul><li>image:镜像,一个文件,用来创建容器;如果你有 Windows 装机经历,那可以很好理解镜像这个词的含义,反正我年少的时候没少把 Windows 镜像刻盘重装系统。</li><li>container:容器,一个可运行的镜像实例,里面运行着一个完整的操作系统,可以做一切你当前操作系统可以做的事情。</li><li>Dockerfile:镜像构建的模板,描述镜像构建的步骤。</li></ul><p>它们之间的关系是,通过 Dockerfile 构建出镜像,然后通过镜像构建容器,容器里可以跑程序。另外,一个镜像可以创建多个容器,每个容器之间是相互隔离的。</p><p>对于我们开发人员来说,Docker 可以做到:</p><ul><li>编写本地代码</li><li>使用 Docker 将程序推送到测试环境</li><li>发现 bug 后在开发环境下修复,重新部署到测试环境测试</li><li>测试完成后,推送到生产环境</li></ul><p>在这个过程中,Docker 提供的是开发环境、测试环境和生产环境的一致性,细细想一下,是不是挺恐怖的。。。。。</p><p>以后我们开发人员再说什么“我本地运行的好好的呀”就甩不了锅了,哈哈。</p><p>Java 程序员应该对 Docker 这句宣传语很熟悉:</p><blockquote><p>Build once,Run anywhere(搭建一次,到处能用)</p></blockquote><p>Docker 采用的是 CS 架构,客户端与 Docker 守护进程交互,后者负责构建、运行和分发 Docker 容器的工作。</p><p><img src="http://cdn.tobebetterjavaer.com/tobebetterjavaer/images/springboot/docker-5583604e-5ef8-4187-b29b-ff8527829141.png" alt=""></p><p>Docker 的应用场景非常丰富,比如说:</p><ul><li>自动打包和部署应用</li><li>创建轻量、私有的PaaS环境</li><li>自动化测试和持续集成/部署</li><li>部署并扩展Web应用、数据库和后端服务器</li><li>创建安全沙盒</li><li>轻量级的桌面虚拟化</li></ul><h3 id="安装-docker" tabindex="-1"><a class="header-anchor" href="#安装-docker" aria-hidden="true">#</a> 安装 Docker</h3><p>Docker Engine(引擎)需要安装在 64 位的 Linux 服务器上(32 位不支持),并且需要一些先决条件(针对 CentOS 系统):</p><blockquote><p>PS:Linux 社区已不再维护 CentOS 8,导致 yum 源需要<a href="https://help.aliyun.com/document_detail/405635.htm" target="_blank" rel="noopener noreferrer">切换<span><svg class="external-link-icon" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewbox="0 0 100 100" width="15" height="15"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg><span class="external-link-icon-sr-only">open in new window</span></span></a>,后面打算把系统切换为 Anolis或Alinux</p></blockquote><ul><li>必须是 CentOS 7 或者 8版本,以下版本不支持</li><li>centos-extras 存储库必须是启用的,一般是启用的,如果没启用的话,需要手动启用</li><li>推荐使用 overlay2(戳<a href="https://www.cnblogs.com/FengZeng666/p/14173906.html" target="_blank" rel="noopener noreferrer">链接<span><svg class="external-link-icon" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewbox="0 0 100 100" width="15" height="15"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg><span class="external-link-icon-sr-only">open in new window</span></span></a>了解)存储驱动</li></ul><p>我的云服务器安装的是 CentOS 系统,所以这里就以 CentOS 作为演示环境。我个人更喜欢 RPM(Red-Hat Package Manager,红帽软件包管理器)安装包的方式,简单高效。</p><p>第一步,安装 yum-utils 工具包。</p><div class="language-text ext-text line-numbers-mode"><pre class="language-text"><code>yum install -y yum-utils
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div></div></div><p>第二步,使用 yum-utils 提供的 yum-config-manager 工具配置 Docker 的安装仓库。</p><div class="language-text ext-text line-numbers-mode"><pre class="language-text"><code>yum-config-manager \
--add-repo \
https://download.docker.com/linux/centos/docker-ce.repo
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><p>第三步,安装 Docker 引擎(包括 Docker Engine, containerd, 和 Docker Compose)。</p><div class="language-text ext-text line-numbers-mode"><pre class="language-text"><code>yum install docker-ce docker-ce-cli containerd.io docker-compose-plugin
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div></div></div><p>第四步,启动 Docker。</p><div class="language-text ext-text line-numbers-mode"><pre class="language-text"><code>systemctl start docker
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div></div></div><p>第五步,验证 Docker 是否正确安装。</p><div class="language-text ext-text line-numbers-mode"><pre class="language-text"><code>docker run hello-world
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div></div></div><p>如果出现以下提示信息,就表明 Docker 安装成功了!</p><p><img src="http://cdn.tobebetterjavaer.com/tobebetterjavaer/images/springboot/docker-e1443e64-810b-46e3-9c1c-f144cdca1a35.png" alt=""></p><p>以上是 Docker 官方提供的安装方式,稍显复杂,其实我们可以用更简洁的方式。</p><div class="language-text ext-text line-numbers-mode"><pre class="language-text"><code># 首先安装 Docker
yum -y install docker
# 然后启动 Docker 服务
service docker start
# 测试安装是否成功
docker -v
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><p>Docker 针对 Windows 和 macOS 系统都提供了桌面版,可以到官网下载安装包。</p><blockquote><p>Docker 下载地址:<a href="https://docs.docker.com/get-docker/" target="_blank" rel="noopener noreferrer">https://docs.docker.com/get-docker/<span><svg class="external-link-icon" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewbox="0 0 100 100" width="15" height="15"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg><span class="external-link-icon-sr-only">open in new window</span></span></a></p></blockquote><p>我这里以 macOS 为例,M1 芯片可以选择 Apple Chip。下载完成后直接傻瓜式安装就可以了。</p><p><img src="http://cdn.tobebetterjavaer.com/tobebetterjavaer/images/springboot/docker-f4cd508b-c77b-44a1-979f-b4e9e7ff82ef.png" alt=""></p><p>安装并启动成功后的界面如下所示:</p><p><img src="http://cdn.tobebetterjavaer.com/tobebetterjavaer/images/springboot/docker-c78c5bea-aa4c-472f-aa69-20854211fd02.png" alt=""></p><p>按照提示,在终端输入命令 <code>docker run -d -p 80:80 docker/getting-started</code>:</p><p><img src="http://cdn.tobebetterjavaer.com/tobebetterjavaer/images/springboot/docker-9d04a0e6-7e74-4a36-bc39-7abc0079ff16.png" alt=""></p><p>再次回到 Docker 桌面版,可以看到刚刚通过 80 端口在 Docker 中跑起来的 Docker 教程。</p><p><img src="http://cdn.tobebetterjavaer.com/tobebetterjavaer/images/springboot/docker-36708add-535a-41d3-bbcf-68e2750e5f16.png" alt=""></p><p>点击「open in browser」图标就可以在浏览器打开教程文档了。</p><p><img src="http://cdn.tobebetterjavaer.com/tobebetterjavaer/images/springboot/docker-209a79c6-294f-4f0d-9fe1-1ab62190d4ef.png" alt=""></p><p>Windows 用户也可以通过我之前推荐的 chocolatey 命令行工具安装。</p><p><img src="http://cdn.tobebetterjavaer.com/tobebetterjavaer/images/springboot/docker-4ef004a5-5b96-41eb-8621-65edfbe64f14.png" alt=""></p><p>(Windows 的安装等下一次拿到小米的笔记本后,我装一个把这部分补充完整)</p><h3 id="开启-docker-远程访问权限" tabindex="-1"><a class="header-anchor" href="#开启-docker-远程访问权限" aria-hidden="true">#</a> 开启 Docker 远程访问权限</h3><p>为了将我们本地的应用程序部署到 Docker 服务器上,我们需要开启一下 Docker 的远程访问权限。</p><p>第一步,通过以下命令打开 Docker 配置文件。</p><div class="language-text ext-text line-numbers-mode"><pre class="language-text"><code>vim /usr/lib/systemd/system/docker.service
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div></div></div><p>第二步,在 service 节点下编辑 ExecStart 属性,增加 <code>-H tcp://0.0.0.0:2375</code></p><p><img src="http://cdn.tobebetterjavaer.com/tobebetterjavaer/images/springboot/docker-a1be68f4-cb1b-45b1-ab6a-b39259a3ef39.png" alt=""></p><p>这样就相当于对外开放了 2375 端口,如果你安装了宝塔面板,记得在安全页放行该端口,同时,云服务器的防火墙也要放开该端口。</p><p><img src="http://cdn.tobebetterjavaer.com/tobebetterjavaer/images/springboot/docker-9bddcf0e-c6a7-414d-82ef-7881009ea6c9.png" alt=""></p><p>配置完成后,重启 Docker。</p><div class="language-text ext-text line-numbers-mode"><pre class="language-text"><code>systemctl daemon-reload
systemctl restart docker
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div></div></div><p>在浏览器地址栏输入 <code>http://ip:2375/version</code> 测试一下是否生效。</p><p><img src="http://cdn.tobebetterjavaer.com/tobebetterjavaer/images/springboot/docker-29852364-5b55-43b4-a7fa-6a9c4a592606.png" alt=""></p><p>之后,可以在 Intellij IDEA 中配置一下 Docker 的 TCP socket,如果出现 connection successful 就表明链接成功了。</p><p><img src="http://cdn.tobebetterjavaer.com/tobebetterjavaer/images/springboot/docker-a6e42514-8740-48ac-8baf-b97f49cb1818.png" alt=""></p><h3 id="使用-docker-部署-spring-boot" tabindex="-1"><a class="header-anchor" href="#使用-docker-部署-spring-boot" aria-hidden="true">#</a> 使用 Docker 部署 Spring Boot</h3><p>第一步,新建一个简单的 Spring Boot 项目。</p><p><img src="http://cdn.tobebetterjavaer.com/tobebetterjavaer/images/springboot/docker-3f748cc6-2efe-487d-9799-f02794145aec.png" alt=""></p><p>一个非常简单的 Web 项目,只有一个控制器,代码如下:</p><div class="language-java ext-java line-numbers-mode"><pre class="language-java"><code><span class="token annotation punctuation">@RequestMapping</span>
<span class="token annotation punctuation">@RestController</span>
<span class="token keyword">public</span> <span class="token keyword">class</span> <span class="token class-name">DockerController</span> <span class="token punctuation">{</span>
<span class="token annotation punctuation">@RequestMapping</span><span class="token punctuation">(</span><span class="token string">"/"</span><span class="token punctuation">)</span>
<span class="token keyword">public</span> <span class="token class-name">String</span> <span class="token function">hello</span><span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
<span class="token keyword">return</span> <span class="token string">"Docker,我告诉你,沉默王二是沙雕"</span><span class="token punctuation">;</span>
<span class="token punctuation">}</span>
<span class="token punctuation">}</span>
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><p>@RequestMapping、@RestController 注解我们在前几个章节介绍过了,也就是表明我们这是一个 SpringMVC 的项目,<code>/</code> 路径意味着我们只要在浏览器地址栏输入 <code>localhost:8080</code> 就可以发送请求了,响应结果为 “Docker,我告诉你,沉默王二是沙雕”。</p><p>启动服务后,可以通过 Intellij IDEA 的 HTTP Client 验证一下。</p><p><img src="http://cdn.tobebetterjavaer.com/tobebetterjavaer/images/springboot/docker-78c3e7e5-e208-417e-9b9f-4fc97643f4da.png" alt=""></p><p>OK,项目可以正常访问。</p><p>第二步,构建 Spring Boot 项目的 Docker 镜像文件 Dockerfile。</p><p>在项目根目录新建 Dockerfile 文件,见下图位置。</p><p><img src="http://cdn.tobebetterjavaer.com/tobebetterjavaer/images/springboot/docker-08d6ce30-8192-4a7e-8bdc-95adb91c7c74.png" alt=""></p><p>具体内容如下所示:</p><div class="language-text ext-text line-numbers-mode"><pre class="language-text"><code>FROM openjdk:8-jdk-alpine
ARG JAR_FILE=target/*.jar
COPY ${JAR_FILE} app.jar
ENTRYPOINT ["java","-jar","/app.jar"]
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><ul><li><code>FROM openjdk:8-jdk-alpine</code>:表示使用 JDK8 为基础镜像。</li><li><code>ARG JAR_FILE=target/*.jar</code>:表示定义一个参数名为 JAR_FILE,值为 <code>target/*.jar</code> 的构建参数</li><li><code>COPY ${JAR_FILE} app.jar</code>:表示把 target 目录下的 jar 文件复制一份新的到镜像内的 app.jar 文件</li><li><code>ENTRYPOINT ["java","-jar","/app.jar"]</code>:表示通过 <code>java -jar</code> 的形式运行 <code>app.jar</code>,ENTRYPOINT 用来配置容器启动时的运行命令,第一个参数是运行命令,后面是一个一个参数。</li></ul><p>第三步,在 pom.xml 文件中添加 Maven 的 Docker 插件。</p><div class="language-text ext-text line-numbers-mode"><pre class="language-text"><code><plugin>
<groupId>com.spotify</groupId>
<artifactId>docker-maven-plugin</artifactId>
<version>1.2.2</version>
<executions>
<execution>
<id>build-image</id>
<phase>package</phase>
<goals>
<goal>build</goal>
</goals>
</execution>
</executions>
<configuration>
<dockerHost>http://ip:2375</dockerHost>
<imageName>itwanger/${project.artifactId}</imageName>
<imageTags>
<imageTag>${project.version}</imageTag>
</imageTags>
<forceTags>true</forceTags>
<dockerDirectory>${project.basedir}</dockerDirectory>
<resources>
<resource>
<targetPath>/</targetPath>
<directory>${project.build.directory}</directory>
<include>${project.build.finalName}.jar</include>
</resource>
</resources>
</configuration>
</plugin>
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><ul><li>在 <code>executions</code> 节点下添加 docker:build,表示在执行 mvn:package 打包的时候顺带构建一下 Docker 镜像。</li><li>在 <code>configuration</code> 节点下添加 Docker 主机的地址、镜像的名字、镜像的版本、镜像文件的目录、以及 resources 节点下配置的 jar 包位置和名称等。</li></ul><p>配置搞定后,接下来就是对项目进行打包,可以直接点击 Maven 面板中的 package 进行打包。</p><p><img src="http://cdn.tobebetterjavaer.com/tobebetterjavaer/images/springboot/docker-1932f285-bb8d-4225-af6e-014ed2c9104b.png" alt=""></p><p>首次打包需要下载一些基础镜像,打包成功后,可以在 Docker 容器中查看我们刚刚打包好的镜像,命令 <code>docker images</code>。</p><p><img src="http://cdn.tobebetterjavaer.com/tobebetterjavaer/images/springboot/docker-730b4f5b-d556-4f73-9dfc-b22152d86f08.png" alt=""></p><p>接下来,我们就可以启动这个镜像的容器:</p><div class="language-text ext-text line-numbers-mode"><pre class="language-text"><code>docker run -d --name itwanger -p 8080:8080 itwanger/springboot-docker:0.0.1-SNAPSHOT
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div></div></div><ul><li><code>-d</code>: 后台运行容器,并返回容器ID;</li><li><code>--name</code>: 为容器指定一个名称 itwanger;</li><li><code>-p</code>: 指定端口映射,格式为:主机(宿主)端口:容器端口</li></ul><p>然后在浏览器中访问 8080 端口,就可以看到我们的应用程序在 Docker 上成功运行了。</p><p><img src="http://cdn.tobebetterjavaer.com/tobebetterjavaer/images/springboot/docker-79a760b1-c084-4a5c-adc0-911b2e44ae7a.png" alt=""></p><p>当利用 <code>docker run</code> 来创建容器时,Docker 在后台运行的标准操作包括:</p><ul><li>检查本地是否存在指定的镜像,不存在就从仓库下载</li><li>利用镜像创建并启动一个容器</li><li>分配一个文件系统,并在只读的镜像层外面挂载一层可读写层</li><li>从宿主主机配置的网桥接口中桥接一个虚拟接口到容器中去</li><li>从地址池配置一个 ip 地址给容器</li><li>执行用户指定的应用程序</li><li>执行完毕后容器被终止</li></ul><h3 id="intellij-idea-直连-docker" tabindex="-1"><a class="header-anchor" href="#intellij-idea-直连-docker" aria-hidden="true">#</a> Intellij IDEA 直连 Docker</h3><p>新版的 Intellij IDEA 中已经默认继承了 Docker,所以我们可以通过 services 面板打开 Docker,直接进行操作。</p><p><img src="http://cdn.tobebetterjavaer.com/tobebetterjavaer/images/springboot/docker-6b4fbbb0-3986-403b-9d7e-7e50cf27b499.png" alt=""></p><hr><p>更多内容,只针对《Java 程序员进阶之路》星球用户开放,需要的小伙伴可以<a href="https://tobebetterjavaer.com/zhishixingqiu/" target="_blank" rel="noopener noreferrer">戳链接🔗<span><svg class="external-link-icon" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewbox="0 0 100 100" width="15" height="15"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg><span class="external-link-icon-sr-only">open in new window</span></span></a>加入我们的星球,一起学习,一起卷。。<strong>编程喵</strong>🐱是一个 Spring Boot+Vue 的前后端分离项目,融合了市面上绝大多数流行的技术要点。通过学习实战项目,你可以将所学的知识通过实践进行检验、你可以拓宽自己的技术边界,你可以掌握一个真正的实战项目是如何从 0 到 1 的。</p><h3 id="源码路径" tabindex="-1"><a class="header-anchor" href="#源码路径" aria-hidden="true">#</a> 源码路径:</h3><blockquote><ul><li>编程喵:<a href="https://github.com/itwanger/coding-more" target="_blank" rel="noopener noreferrer">https://github.com/itwanger/coding-more<span><svg class="external-link-icon" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewbox="0 0 100 100" width="15" height="15"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg><span class="external-link-icon-sr-only">open in new window</span></span></a></li><li>codingmore-docker:<a href="https://github.com/itwanger/codingmore-learning/tree/main/springboot-docker" target="_blank" rel="noopener noreferrer">https://github.com/itwanger/codingmore-learning<span><svg class="external-link-icon" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewbox="0 0 100 100" width="15" height="15"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg><span class="external-link-icon-sr-only">open in new window</span></span></a></li></ul></blockquote><hr><p><img src="http://cdn.tobebetterjavaer.com/tobebetterjavaer/images/xingbiaogongzhonghao.png" alt=""></p></div><!----><footer class="page-meta"><div class="meta-item edit-link"><a href="https://github.com/itwanger/toBeBetterJavaer/edit/master/docs/springboot/docker.md" rel="noopener noreferrer" target="_blank" aria-label="在 GitHub 上编辑此页" class="nav-link label"><!--[--><svg xmlns="http://www.w3.org/2000/svg" class="icon edit-icon" viewbox="0 0 1024 1024" fill="currentColor" aria-label="edit icon"><path d="M430.818 653.65a60.46 60.46 0 0 1-50.96-93.281l71.69-114.012 7.773-10.365L816.038 80.138A60.46 60.46 0 0 1 859.225 62a60.46 60.46 0 0 1 43.186 18.138l43.186 43.186a60.46 60.46 0 0 1 0 86.373L588.879 565.55l-8.637 8.637-117.466 68.234a60.46 60.46 0 0 1-31.958 11.229z"></path><path d="M728.802 962H252.891A190.883 190.883 0 0 1 62.008 771.98V296.934a190.883 190.883 0 0 1 190.883-192.61h267.754a60.46 60.46 0 0 1 0 120.92H252.891a69.962 69.962 0 0 0-69.098 69.099V771.98a69.962 69.962 0 0 0 69.098 69.098h475.911A69.962 69.962 0 0 0 797.9 771.98V503.363a60.46 60.46 0 1 1 120.922 0V771.98A190.883 190.883 0 0 1 728.802 962z"></path></svg><!--]-->在 GitHub 上编辑此页<span><svg class="external-link-icon" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewbox="0 0 100 100" width="15" height="15"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg><span class="external-link-icon-sr-only">open in new window</span></span><!----></a></div><div class="meta-item update-time"><span class="label">上次编辑于: </span><span class="info">2022/6/13 上午11:52:55</span></div><div class="meta-item contributors"><span class="label">贡献者: </span><!--[--><!--[--><span class="contributor" title="email: www.qing_gee@163.com">沉默王二</span><!--]--><!--]--></div></footer><nav class="page-nav"><a href="/springboot/mybatis.html" class="nav-link prev" aria-label="整合MyBatis"><div class="hint"><span class="arrow left"></span>上一页</div><div class="link"><!---->整合MyBatis</div></a><a href="/springboot/macos-codingmore-run.html" class="nav-link next" aria-label="macOS下如何运行编程喵源码"><div class="hint">下一页<span class="arrow right"></span></div><div class="link">macOS下如何运行编程喵源码<!----></div></a></nav><div class="giscus-wrapper input-top" style="display:block;">Loading...</div><!----><!--]--></main><!--]--><footer class="footer-wrapper"><div class="footer"><a href="https://beian.miit.gov.cn/" target="_blank">豫ICP备2021038026号-1</a><img src="https://cdn.tobebetterjavaer.com/tobebetterjavaer/images/beian.png" height="15px" width="15px" /><a target="_blank" href="http://www.beian.gov.cn/portal/registerSystemInfo?recordcode=41030502000411"><span>豫公网安备 41030502000411号</span></a></div><div class="copyright">Copyright © 2022 沉默王二</div></footer><!--]--></div><!--]--><!----><!----><!--]--></div>
<script type="module" src="/assets/app.41bad062.js" defer></script>
</body>
</html>