我的任务是创建一个非常简单的、可通过 Web 浏览器访问的 gui,它可以在 docker 容器中运行特定的 java 文件。为此,我选择设置一个 php-apache 服务器,该服务器通过 gui 提供 index.php 文档。 Dockerfile 如下所示:
FROM php:7.0-apache
COPY src /var/www/html
EXPOSE 80
这获取了我编写的gui(index.php位于src文件夹内)并且运行没有问题,但它无法访问和运行所需的java文件(显然,因为这创建了一个单独的容器)。
问题:
如何在现有 Dockerfile(如下提供)内设置 php-apache 服务器,执行与上面 Dockerfile 相同的操作?我的目标是使用 php 脚本运行 java 文件并向用户显示结果。
FROM openjdk:8-jre-slim
WORKDIR /usr/src/app
COPY ["./build/libs/*.jar", "./fooBar.jar"]
ENV JAVA_OPTS=${FOO_JAVA_OPTS}
CMD ["/usr/bin/tail", "-f", "/dev/null"]
我自己没有编写java文件,只是负责使用它运行特定的命令。
最佳答案
因为它是基于 Debian 的镜像。一种方法是在容器中安装包并从中创建新镜像。
root@310c94d8d75f:/usr/src/app# cat /etc/os-release
PRETTY_NAME="Debian GNU/Linux 9 (stretch)"
NAME="Debian GNU/Linux"
VERSION_ID="9"
VERSION="9 (stretch)"
2: root@310c94d8d75f:/usr/src/app# apt update
3- root@310c94d8d75f:/usr/src/app# apt install apache2
4- root@310c94d8d75f:/usr/src/app# apt install php
最后运行:docker commit
此后,您将获得具有上述名称的新图像。
引用号:https://docs.docker.com/engine/reference/commandline/commit/
2:您可以在Dockerfile中添加相同的命令并重建。
FROM openjdk:8-jre-slim
WORKDIR /usr/src/app
COPY ["./build/libs/*.jar", "./fooBar.jar"]
ENV JAVA_OPTS=${FOO_JAVA_OPTS}
CMD ["/usr/bin/tail", "-f", "/dev/null"]
RUN apt update && apt install apache2 -y && apt install php -y
关于java - 如何在已经使用另一个镜像的 docker 容器中设置并运行一个非常简单的 php-apache 服务器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55609286/