4 回答
TA贡献1805条经验 获得超10个赞
这是我的问题,我以这种方式找到了它对于开发,您可以绑定一个卷。在这个例子中,我假设你已经在 3000 上暴露了一个端口,而不是一个绝对项目地址注意如果你在你的 shell 中的项目目录中,你可以使用 $(pwd)
docker run -d -p 3000:3000 -v absolute-project-address:/app image-name
你也可以添加你的卷名来存储数据
docker run -d -p 3000:3000 -v absolute-project-address:/app -v volumeName:/app/data image-name
但是为了生产,你必须创建一个图像
TA贡献1810条经验 获得超4个赞
您绝对应该制作一个新图像,而不是通过已安装的卷共享代码。那么整个 docker 的思想就是产生一个自包含的“服务”,它可以跨服务器移植(即复制图像)。Yuo docker 文件和镜像构建过程将跟踪您的代码版本,即在您的 docker 文件中,您可以拉取特定分支,或者您可以使用特定标签标记镜像。在安装卷的情况下,您永远无法确定您的代码实际上是什么版本。跑。
希望仅凭这个原因就可以帮助您做出决定。
TA贡献1111条经验 获得超0个赞
一般来说,最好的做法是在您拥有新的源代码并从该图像运行新容器时创建一个新图像。Docker 可以快速创建和运行新镜像,所以你应该利用它。此外,您可以通过标记图像来了解您正在运行的代码版本。
您提到您需要在 Docker 案例中编译 Java 代码,但在任何一种情况下都需要。您可以将您的代码编译成一个 Jar,然后将 Jar 添加(或复制)到您的容器中并在那里运行它。
使用外部代码方法会想到一些快速的缺点:您需要一些外部方法来管理正在运行的代码版本,docker tags 会为您处理。您还需要一些方法来提醒 Docker 容器一个新的可执行文件已准备好,然后让 Docker 运行它。此外,您需要确保您的 Docker 容器运行的 Java(或 Python)版本与您的系统运行的版本相同,这在 Docker 中也得到了处理,因为您可以从 Java 基础映像构建。
TA贡献1770条经验 获得超3个赞
您应该创建一个新映像,如果您认为创建一个新映像和部署是您的任务,那么您可以设置一个 CI/CD 管道,它将自动编译 java 代码、创建一个映像并在您随时为您部署它将代码推送到 GIT。
添加回答
举报