这是我第一次尝试创建一个泊坞窗图像,我希望有人可以帮助我。我的Dockerfile看起来大致如下:
FROM mybaseimage:0.1
MAINTAINER ...
ENV JAVA_HOME /usr/lib/jvm/java-7-openjdk-amd64
RUN sed 's/main$/main universe/' -i /etc/apt/sources.list
ENV DEBIAN_FRONTEND noninteractive
RUN apt-get update
RUN apt-get install -y openjdk-7-jre && apt-get clean &&\
mkdir temp_dir && cd temp_dir && \
${JAVA_HOME}/bin/jar -xvf somejar.jar &&\
cd ..
ENTRYPOINT ["somescript.sh"]
基本上我只安装Java,所以我可以扩展一个jar文件。当我运行我的makefile时,我收到以下错误:
/ bin / sh:1:/ usr / lib / jvm / java-7-openjdk-amd64:权限被拒绝
我一直试图效仿这个例子: https://registry.hub.docker.com/u/barnybug/openjdk-7-jre/dockerfile/
非常感谢的建议
编辑:这里的评论中的每个请求都是我的makefile:
DOCKER_REGISTRY=registry.mycompany.com
DOCKER_IMAGE=appimage-myapp
DOCKER_TAG=3.0
SUDO=
ARCHIVE_NAME=$(DOCKER_IMAGE):$(DOCKER_TAG)
REPO_ARCHIVE_NAME=$(DOCKER_REGISTRY)/$(ARCHIVE_NAME)
BASE_IMAGE_ARCHIVE=$(DOCKER_IMAGE)_$(DOCKER_TAG).tar.gz
all: $(BASE_IMAGE_ARCHIVE)
.PHONY: docker_image
docker_image: Dockerfile
$(SUDO) docker build -t $(ARCHIVE_NAME) .
$(BASE_IMAGE_ARCHIVE): docker_image
$(SUDO) docker tag -f $(ARCHIVE_NAME) $(REPO_ARCHIVE_NAME)
$(SUDO) docker push $(REPO_ARCHIVE_NAME)
$(SUDO) docker save $(ARCHIVE_NAME) | gzip -c > $@
$(SUDO) docker rmi $(REPO_ARCHIVE_NAME)
我用
运行make docker_image SUDO=sudo
答案 0 :(得分:15)
我可以通过以下步骤安装OpenJDK-8
(取自here)。我的Dockerfile
继承自phusion/baseimage-docker,基于Ubuntu 16.04 LTS
。
# Install OpenJDK-8
RUN apt-get update && \
apt-get install -y openjdk-8-jdk && \
apt-get install -y ant && \
apt-get clean;
# Fix certificate issues
RUN apt-get update && \
apt-get install ca-certificates-java && \
apt-get clean && \
update-ca-certificates -f;
# Setup JAVA_HOME -- useful for docker commandline
ENV JAVA_HOME /usr/lib/jvm/java-8-openjdk-amd64/
RUN export JAVA_HOME
要安装OpenJDK-7
,您可能需要预先添加
add-apt-repository ppa:openjdk-r/ppa
这样第一步就变成了
# Install OpenJDK-7
RUN add-apt-repository ppa:openjdk-r/ppa && \
apt-get update && \
apt-get install -y openjdk-7-jdk && \
apt-get install -y ant && \
apt-get clean;
我希望这会有所帮助。
答案 1 :(得分:2)
已经有java的官方回购,它使用Open JDK。
它很容易使用它。请查看此repo,其中展示了非常基本的hello world program。
Dockerfile:
FROM java:7
COPY src /home/root/java/src
WORKDIR /home/root/java
RUN mkdir bin
RUN javac -d bin src/HelloWorld.java
ENTRYPOINT ["java", "-cp", "bin", "HelloWorld"]
HelloWorld.java文件:
public class HelloWorld{
public static void main(String[] args){
System.out.println("Hello World!!!");
}
}
答案 2 :(得分:1)
我能够使用Ubuntu 18.04在映像上安装Java-11。我也只需要一个应用程序。 (围绕Apache Tika的Python包装器。)
FROM python:3.8.2-buster
COPY . /usr/src/app
# Install OpenJDK-11
RUN apt-get update && \
apt-get install -y openjdk-11-jre-headless && \
apt-get clean;
# Install PYTHON requirements
COPY requirements.txt ./
RUN pip install --no-cache-dir -r requirements.txt
# START WEBAPP SERVICE
CMD [ "python", "/usr/src/app/main.py" ]
希望有帮助。