java - 如何在已经使用另一个镜像的 docker 容器中设置并运行一个非常简单的 php-apache 服务器?

标签 java php apache docker dockerfile

我的任务是创建一个非常简单的、可通过 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/

相关文章:

php - MySQL 错误 : You have an error in your SQL syntax (ENGINE=MyISAM)

php - Laravel 5.4 与外键的多对多关系

java - Maven 项目 : SWT 3. 5 依赖 : any official public repo?

java - 如何在Eclipse中正确使用Tomcat和maven

php - 无法识别查询设置的变量

java - 使用intellij将Spring项目部署到apache tomcat8

apache - Apache 中多个目录的规则相同吗?

java - 如何在不重新启动的情况下删除apache axis tmp文件

java - 如何在第一次调用 Singleton 期间仅更新一次 map ?

Java 日期和时间 (JSR 310) : does a temporal range contain value without iterating all of them