平时构建项目镜像用的是 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 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/* ENV JAVA_HOME /usr/lib/jvm/java-8 -openjdk-amd64ENV PATH $PATH:$JAVA_HOME/binADD acm-judge-module/ /app/acm-judge-module/ WORKDIR /app/acm-judge-module/judge/ ADD target/nutoj-code-sandbox-0.0.1-SNAPSHOT.jar /app/acm-judge-module/judge/ 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