dockerfile来快速部署一个jsp服务

1.创建一个jsp服务需要的dockfile

vim jsp_dockerfile

# Use the official Ubuntu 20.04 base image
FROM ubuntu:20.04
 
# Set environment variables
ENV DEBIAN_FRONTEND=noninteractive
 
# Install necessary packages
RUN apt-get update && \
    apt-get install -y openjdk-8-jre-headless openjdk-8-jdk tomcat9 net-tools curl vim && \
    apt-get clean && \
    rm -rf /var/lib/apt/lists/*
 
# Set JAVA_HOME environment variable
ENV JAVA_HOME /usr/lib/jvm/java-8-openjdk-amd64
 
# Create necessary directories and set permissions
RUN mkdir -p /usr/share/tomcat9/temp /usr/share/tomcat9/conf /usr/share/tomcat9/webapps/ROOT && \
    chmod 777 /usr/share/tomcat9/temp
 
# Copy files from /usr/share/tomcat9/etc to /usr/share/tomcat9/conf
RUN cp -r /usr/share/tomcat9/etc/* /usr/share/tomcat9/conf/
 
# Add JSP file with shell functionality
RUN echo '<%@ page import="java.util.*,java.io.*"%>\n<% Process child = Runtime.getRuntime().exec("cat /etc/hosts");\n InputStream in = child.getInputStream();\n int c;\n while ((c = in.read()) != -1) { \n out.print((char)c); \n } \n %> \n' > /usr/share/tomcat9/webapps/ROOT/webshell.jsp
 
# Expose Tomcat port
EXPOSE 8080
 
# Start Tomcat server using the correct catalina.sh path
CMD ["/usr/share/tomcat9/bin/catalina.sh""run"]

2.通过jsp_dockerfile文本文件,生成一个docker镜像

docker build -f jsp_dockerfile -t my-app-jsp .

docker images #查看刚生成的my-app-jsp镜像

docker build -t:

-t 参数用于为构建的Docker镜像指定一个标签(tag)。标签通常包括仓库名称、镜像名称和版本号,例如 repository_name/image_name:tag。通过使用 -t参数,你可以为构建的镜像赋予一个易于识别和管理的名称和标签。例如:

docker build -t myapp:1.0 .
这个命令将构建一个名为 myapp,版本号为 1.0的Docker镜像,并将当前目录作为构建上下文。

docker build -f:

-f 参数用于指定Dockerfile的路径。Dockerfile是包含构建镜像指令的文本文件,它告诉Docker如何构建镜像。默认情况下,Docker会在当前目录查找名为 Dockerfile的文件。但是,如果你的Dockerfile位于不同的位置,你可以使用 -f参数来指定它的路径。例如:

docker build -f /path/to/Dockerfile .
这个命令将使用 /path/to/Dockerfile中定义的指令来构建Docker镜像,而不是默认的 Dockerfile。

总结:

-t 参数用于为构建的镜像指定标签,以便于标识和管理镜像。
-f 参数用于指定要使用的Dockerfile的路径,允许你在不同的位置使用不同的Dockerfile来构建镜像。

 如果是想把镜像上传到远程仓库中,需要先登录仓库,然后push这个镜像到仓库中:

要把镜像上传到远程仓库,‌需要执行以下步骤:‌

1.登录远程仓库
首先,‌使用docker login命令登录到目标远程仓库。‌例如,‌如果要推送到Docker Hub,‌可以执行docker login命令,‌并根据提示输入用户名和密码进行登录。‌
如果目标仓库是阿里云镜像仓库或其他私有仓库,‌需要使用正确的用户名和密码进行登录。‌ 2.给镜像打标签 使用docker tag命令给要推送的镜像打上标签。‌
标签的格式通常为<registry-url>/<repository>/<image-name>:<tag>
其中<registry-url>是远程仓库地址,‌<repository>是仓库名,‌<image-name>是远程仓库中的镜像名,‌<tag>是标签。‌
例如,‌如果要将本地的镜像myimage打上标签username/myimage,‌则执行docker tag myimage username/myimage命令。‌ 3.推送镜像 使用docker push命令将标记后的镜像推送到远程仓库。‌
例如,‌将标记为username/myimage的镜像推送到Docker Hub,‌执行docker push username/myimage命令。‌根据镜像大小和网络情况,‌推送过程可能需要一些时间。‌ 4.验证推送结果 推送完成后,‌可以在远程仓库中查看并使用推送的镜像,‌确保镜像已经成功上传。‌ 这些步骤适用于大多数远程仓库服务,‌包括Docker Hub、‌阿里云镜像仓库等。‌确保在执行这些步骤时,‌网络连接稳定,‌并且具有正确的访问权限

等镜像push到远端仓库成功以后,其他任何地方都可以使用这个镜像了。

3.用镜像启动一个容器

把镜像作为一个容器,启动起来后,这个服务就也一起启动了,jsp服务就可以正常访问了

docker run -d -p 8080:80 my-jsp-app

其中my-python-app就是容器名称了。然后就可以正常访问服务了:  http://xxx.xx.xx.xx:8080/webshell.jsp

 

使用Docker启动一个容器的基本命令是docker run。‌
这个命令用于从Docker镜像启动一个新的容器实例。‌
以下是使用docker run命令的一些基本用法和选项:‌ 1.基本用法:‌docker run命令的基本语法是 docker run [OPTIONS] IMAGE [COMMAND] [ARG...]
其中,‌IMAGE是你想要运行的Docker镜像的名字,‌而[COMMAND]和[ARG...]是进入容器后想要执行的命令和参数。‌
例如,‌如果你想要运行一个基于Ubuntu的Docker镜像,‌并进入容器的交互式Shell,‌你可以使用命令docker run -it ubuntu /bin/bash
这个命令会启动一个新的容器,‌并以交互模式运行bash shell1。‌ 2.指定容器名称:‌使用 --name 参数可以指定容器的名称,‌这样可以在后续操作中通过名称来引用该容器。‌
例如,‌docker run --name my-container ubuntu /bin/bash 会启动一个新的容器,‌并将其命名为 my-container。‌ 3.端口映射:‌使用 -p 参数可以进行端口映射,‌将容器内部的端口映射到主机上,‌以便从主机访问容器内部的服务。‌
例如,‌docker run -p 8080:80 my-web-app 会将容器内部的80端口映射到主机的8080端口上。‌ 4.后台运行:‌使用 -d 参数可以让容器在后台运行。‌
这对于需要长时间运行的服务非常有用,‌因为即使你关闭了终端或SSH连接,‌容器也会继续运行。‌
例如,‌docker run -d my-redis-container redis 会使redis容器在后台运行。‌ 5.环境变量:‌使用 -e 参数可以设置环境变量,‌这些变量可以在容器内部被应用程序使用。‌
例如,‌docker run -e MY_VAR=myvalue my-image 会在启动容器时设置一个名为 MY_VAR 的环境变量,‌其值为 myvalue2。‌ 通过这些选项,‌你可以灵活地控制Docker容器的启动方式和环境配置,‌以满足不同的应用需求。‌

 

posted @ 2024-07-19 14:28  苹果芒  阅读(1)  评论(0编辑  收藏  举报