我是Docker的新手,并且不知道如何使用maven运行java项目,即使我已经阅读了很多文档并尝试了很多方法.
Dockerfile吗?Dockerfile?嗨,我是Docker的新手,并尝试从头开始编写新图像.我正在编写这个dockerFile来编译和运行同一目录中可用的简单java程序.
这是dockerfile.
FROM scratch
CMD javac HelloWorld.java
CMD java HelloWorld
Run Code Online (Sandbox Code Playgroud)
Docker构建成功,如下所示
[root@hadoop01 myjavadir]# docker build -t runhelloworld .
Sending build context to Docker daemon 3.072 kB
Sending build context to Docker daemon
Step 0 : FROM scratch
--->
Step 1 : CMD javac HelloWorld.java
---> Running in 7298ad7e902f
---> f5278ae25f0c
Removing intermediate container 7298ad7e902f
Step 2 : CMD java HelloWorld
---> Running in 0fa2151dc7b0
---> 25453e89b3f0
Removing intermediate container 0fa2151dc7b0
Successfully built 25453e89b3f0
Run Code Online (Sandbox Code Playgroud)
但是当我尝试运行时,它会抛出以下错误:
[root@hadoop01 myjavadir]# docker run runhelloworld
exec: …Run Code Online (Sandbox Code Playgroud) 好吧,基本上我想从我的主机到我的容器创建一个符号链接"ln -s".
总结一下:主机的主机文件夹.m2必须有一个指向我容器内的.m2文件夹的符号链接,例如:$ ln -s containerIp:/root/.m2 myContainerAlias
我已经看过下面的帖子,但他们没有帮助我,因为我不想将文件复制到我的本地主机.
https://omarabid.com/symlink-to-a-mounted-volume-in-docker/
编辑:
我在这里找到了另一个有价值的问题:
如何将docker容器中的目录挂载到主机? 谢谢...
亲爱的程序员你好,
我正在考虑使用docker容器设置我的开发,因为我目前正在使用Windows,我的设置现在如下:
一个docker镜像,包括一个已经启动并已经运行的jboss
在我的Windows文件系统上签出了hg repo,导入到IntelliJ中
共享文件夹,映射到docker镜像中的deploymentfolder
每当我想部署我的战争时,我都会让IntelliJ将这个工件构建为与输出目录爆炸的战争到$ THE_SHARED_FODLER/mywar.war.然后我将使用mywar.war.deploy触摸同一个repo中的文件.由于这是与jboss docker镜像的部署文件夹共享的,因此启动的Jboss现在部署了我的战争.
但是,由于所有IntelliJ都知道我已经为文件系统构建了一个工件,如果我以正常方式部署战争(例如有一个本地方式),我就无法得到任何好的支持. jboss和部署爆炸工件的jboss-run-configuration.前端的东西(html/css)总是可以用咕噜声或类似的东西来解决,但是当谈到jar-libs时,到目前为止我提出的最佳解决方案是:
用maven重建jar并将其复制到$ THE_SHARED_FOLDER/mywar.war/web-inf/lib /
触摸文件mywar.war.redeploy
然而,这使得从代码更改到结果的转换时间大约为30秒o这里提出了一个非常开放的问题:开发一个在docker镜像中运行的应用程序服务器的好方法是什么?今天怎么样?您是否尝试过类似的东西,并认为Docker容器不适合这样做?
关于这个问题的任何意见都非常欢迎:-)
Brgrgs stevie电视