使用Dockerfile构建Python、Java开发环境

平时构建项目镜像用的是 openjdk:8-jdk-alpine,因为构建方便且用到 Java 环境。

现在的代码沙箱需要用到 Lo-runner ,需要 Java + python 环境。

因此用 ubuntu 作为基础镜像,安装 openjdk-8-jdk 和 python3 ,下面是Dockerfile文件内容:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
# 使用 Ubuntu 18.04 作为基础镜像
FROM ubuntu:18.04

# 设置为中国国内源
RUN sed -i 's/archive.ubuntu.com/mirrors.aliyun.com/g' /etc/apt/sources.list
RUN sed -i 's/security.ubuntu.com/mirrors.aliyun.com/g' /etc/apt/sources.list

# 更新包列表并安装基本软件包
RUN apt-get update && \
apt-get install -y \
# 在这里添加你需要的软件包,以空格分隔 \
openjdk-8-jdk \
python3 \
python3-pip \
&& apt-get update --fix-missing \
&& apt-get clean \
&& rm -rf /var/lib/apt/lists/*

# 设置环境变量,指定 Java 默认版本
ENV JAVA_HOME /usr/lib/jvm/java-8-openjdk-amd64
ENV PATH $PATH:$JAVA_HOME/bin

# 将脚本添加到工作目录
ADD acm-judge-module/ /app/acm-judge-module/

# 指定工作目录
WORKDIR /app/acm-judge-module/judge/

# 将 jar 包添加到工作目录
ADD target/nutoj-code-sandbox-0.0.1-SNAPSHOT.jar /app/acm-judge-module/judge/

# 运行 python3 setup.py install
RUN cd /app/acm-judge-module/ && \
python3 setup.py install && \
cd judge/

# 暴露端口
EXPOSE 8090

# 启动命令
ENTRYPOINT ["java","-jar","/app/acm-judge-module/judge/nutoj-code-sandbox-0.0.1-SNAPSHOT.jar"]

下面是python环境偶尔会出先的问题

首先要升级一下yum和部分依赖包避免安装时出现莫名其妙的错误:

1
2
3
4
5
yum update -y

yum -y groupinstall "Development tools"

yum install openssl-devel bzip2-devel expat-devel gdbm-devel readline-devel sqlite-devel psmisc libffi-devel

安装python包的时候或许会出现一下错误:

1
2
3
4
5
致命错误:Python.h:没有那个文件或目录
| #include <Python.h>
| ^~~~~~~~~~
编译中断。
error: command '/usr/bin/gcc' failed with exit code 1

解决方案:
安装python开发包

1
[root@username ~]# yum install python3-devel

使用Dockerfile构建Python、Java开发环境
https://xmas-nnnut.github.io/2024/01/21/使用Dockerfile构建Python、Java开发环境/
作者
Xmas-nnnut
发布于
2024年1月21日
许可协议