简体   繁体   English

如何使用 nodejs 12 创建 docker 图像,java,gcc,Z644B1F5213D64EC526727

[英]How to create docker image with nodejs 12, java, gcc, g++,python3, monocs

I am trying to dockerize my NodeJs & Express API.我正在尝试对我的 NodeJs & Express API 进行 docker 化。 In my API iam using https://www.npmjs.com/package/compile-run package to compile and run C, Cpp,Java,JavaScript(Node.js env), Python languages. In my API iam using https://www.npmjs.com/package/compile-run package to compile and run C, Cpp,Java,JavaScript(Node.js env), Python languages. This package requires all 5 compilers(gcc,g++,nodejs,python3,javac) installed on the server.这个 package 需要在服务器上安装所有 5 个编译器(gcc、g++、nodejs、python3、javac)。 If any compiler misses, it throws error.如果任何编译器未命中,则会引发错误。

In my local(undockerized) the API is working completely fine on both windows & ubuntu(As I have installed compilers on them).在我的本地(undockerized)中,API 在 windows 和 ubuntu 上都可以正常工作(因为我已经在它们上面安装了编译器)。

I am trying to replicate the same on my docker image.我试图在我的 docker 图像上复制相同的内容。 But I am stuck.但我被困住了。

Look at my Dockerfile :看看我的Dockerfile

FROM node:12
WORKDIR /app
COPY package.json /app
RUN npm install
COPY . /app
CMD ["npm","start"]

I think node-12 image comes along with gcc, g++,python3 and nodejs(obviously).我认为 node-12 图像伴随着 gcc、g++、python3 和 nodejs(显然)。 But the issue is with java .但问题在于java I am not able to compile java code.我无法编译 java 代码。

so I tried it this way所以我这样尝试

FROM node:12
RUN apt-get -y install default-jre
# RUN java -version
RUN apt -y install default-jre
RUN apt install openjdk-11-jre-headless
RUN java -version

WORKDIR /app


COPY package.json /app
RUN npm install
COPY . /app
CMD ["npm","start"]

But I am not able to install open-jdk or open-jre with apt/apt-get.但我无法使用 apt/apt-get 安装 open-jdk 或 open-jre。 What is the right way to configure docker? docker的正确配置方法是什么?

This is my nodeJS API repository https://github.com/yogendramaarisetty/online-compiler-api这是我的 nodeJS API 存储库https://github.com/yogendramaarisetty/online-compiler-api

First you must update the package list with apt-get update , then you can install openjdk-8.首先您必须使用apt-get update更新 package 列表,然后您可以安装 openjdk-8。 openjdk-11 isn't available with that distribution of node. openjdk-11 不适用于该节点的分发。 I used docker run -it node:12 /bin/bash to see what there was,我用docker run -it node:12 /bin/bash看看有什么,

FROM node:12
RUN apt-get update && apt-get install -y openjdk-8-jdk

For example,例如,

$ cat Dockerfile                                         
FROM node:12
RUN apt-get update && apt-get install -y openjdk-8-jdk
$ docker build --tag mynode:1.0 .
$ docker run -it mynode:1.0 /bin/bash                                    
root@d70858199dd1:/# java -version
openjdk version "1.8.0_265"
OpenJDK Runtime Environment (build 1.8.0_265-8u265-b01-0+deb9u1-b01)
OpenJDK 64-Bit Server VM (build 25.265-b01, mixed mode)
root@d70858199dd1:/# javac -version
javac 1.8.0_265
root@d70858199dd1:/#

If you really do need Java 11, there are multiple ways and places to get openjdk-11.如果您确实需要 Java 11,有多种方式和地点可以获得 openjdk-11。 One is bell-sw.一个是bell-sw。 For example,例如,

$ cat Dockerfile
FROM node:12
RUN apt-get update && apt-get install -y libasound2 libxtst6
RUN wget https://download.bell-sw.com/java/11.0.7+10/bellsoft-jdk11.0.7+10-linux-amd64.deb && \
    apt install ./bellsoft-jdk11.0.7+10-linux-amd64.deb
$ docker build --tag mynode:1.1 .
$ docker run -it mynode:1.1 /bin/bash
root@37771ce98727:/# java -version
openjdk version "11.0.7" 2020-04-14 LTS
OpenJDK Runtime Environment (build 11.0.7+10-LTS)
OpenJDK 64-Bit Server VM (build 11.0.7+10-LTS, mixed mode)
root@37771ce98727:/# javac -version
javac 11.0.7

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM