在Docker容器中运行Java Selenium自动化测试遇依赖问题求解答
Java Selenium应用Docker化问题求助
问题背景
我是Docker与Selenium相关开发的新手,目前正在开发一个基于Java 17和Maven 3.9.6的机器人自动化应用,通过Selenium实现Chrome自动化以完成报告下载任务。该应用在本地开发环境及作为可执行JAR文件运行时均正常工作,但在尝试将其Docker化时,构建和运行Docker镜像过程中遇到了与Selenium及浏览器依赖相关的问题。
当前使用的Dockerfile
# 使用官方OpenJDK 17镜像作为基础镜像 FROM maven:3.9.6-eclipse-temurin-17-alpine AS builder # 设置容器内的工作目录 WORKDIR /app RUN chmod -R 777 /app # 安装工具 RUN apt update -y && apt install -y wget unzip ARG DEBIAN_FRONTEND=noninteractive RUN apt-get install -y tzdata # 安装Chrome浏览器 RUN wget -q -O - https://dl-ssl.google.com/linux/linux_signing_key.pub | apt-key add - RUN sh -c 'echo "deb http://dl.google.com/linux/chrome/deb/ stable main" >> /etc/apt/sources.list.d/google-chrome.list' RUN apt-get update RUN apt-get install -y google-chrome-stable # 安装ChromeDriver RUN wget -N https://chromedriver.storage.googleapis.com/105.0.5195.19/chromedriver_linux64.zip -P ~/ RUN unzip ~/chromedriver_linux64.zip -d ~/ RUN rm ~/chromedriver_linux64.zip RUN mv -f ~/chromedriver /usr/local/bin/chromedriver RUN chmod +x /usr/local/bin/chromedriver # 复制整个项目(假设Dockerfile位于项目根目录) COPY . . # 使用Maven构建应用 RUN mvn package -DskipTests # 使用官方OpenJDK 17镜像作为最终镜像 FROM eclipse-temurin:17.0.6_10-jdk@sha256:13817c2faa739c0351f97efabed0582a26e9e6745a6fb9c47d17f4365e56327d # 设置容器内的工作目录 WORKDIR /app # 将JAR文件及其他必要文件复制到容器中 COPY report-automation.jar /app/report-automation.jar COPY src/main/resources/META-INF/MANIFEST.MF /app/META-INF/MANIFEST.MF COPY src /app/src COPY src/main/resources/META-INF/MANIFEST.MF /app/META-INF/MANIFEST.MF COPY src/main/resources/config.properties /app/config.properties COPY pom.xml /app/pom.xml COPY testng.xml /app/testng.xml COPY application.properties /app/application.properties COPY Configuration.xlsm /app/Configuration.xlsm COPY apache-maven-3.9.6/ /app/apache-maven-3.9.6/ COPY Downloads /app/Downloads COPY Logs /app/Logs COPY report /app/report COPY Reports /app/Reports # 暴露端口(如果应用监听特定端口) EXPOSE 8080 # 设置容器的入口点(替换为你的主类) ENTRYPOINT ["java", "-jar", "report-automation.jar"]
咨询问题
- 请评估我的Dockerfile方案是否正确,是否需要对Dockerfile及浏览器依赖的添加方式进行修改或优化?
- 请推荐一些有效的资源,指导如何将该Java Selenium应用Docker化,以部署到当前未安装Selenium或Chrome浏览器的新服务器上?
已参考的资料类型
我查阅了大量网络资源、论坛及视频资料后,参考过以下类型的内容,但似乎仍有遗漏:
- Docker容器内运行Selenium测试的系列教程
- Linux Docker镜像中安装最新Chrome及对应驱动的实操指南
- 关于Docker容器中安装Google Chrome的技术讨论
内容的提问来源于stack exchange,提问作者Gehan
相关产品推荐
相关产品推荐

