我有这个文件:
# We are going to star from the jhipster image
FROM jhipster/jhipster
# install as root
USER root
### Setup docker cli (don't need docker daemon) ###
# Install some packages
RUN apt-get install apt-transport-https ca-certificates curl gnupg-agent software-properties-common -y
# Add Dockers official GPG key:
RUN ["/bin/bash", "-c", "set -o pipefail && curl -fsSL https://download.docker.com/linux/ubuntu/gpg | apt-key add -"]
# Add a stable repository
RUN add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"
# Setup aws credentials as environment variables
ENV AWS_ACCESS_KEY_ID "change it!"
ENV AWS_SECRET_ACCESS_KEY "change it!"
# noninteractive install for tzdata
ARG DEBIAN_FRONTEND=noninteractive
# set timezone for tzdata
ENV TZ=America/Sao_Paulo
RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone
# Install the latest version of Docker Engine - Community and also aws cli
RUN apt-get update && apt-get install docker-ce docker-ce-cli containerd.io awscli -y
# change back to default user
USER jhipster
# install skd and java version 1.8
RUN curl -s "https://get.sdkman.io" | bash
RUN bash $HOME/.sdkman/bin/sdkman-init.sh
RUN bash -c "sdk install java 8.0.222.j9-adpt"
当我运行一个命令从这个dockerfile构建一个图像时,它在最后一步失败,并显示一条消息:
/bin/sh: 1: sdk: not found
当我在本地计算机上安装它时,它会在 bash 上运行 sdkman (sdk)。但是在这个脚本上,它从sh而不是bash调用它。如何让它从 sh 调用 skdman (sdk)?我真正想做的是通过 sdkman (sdk) 安装特定的 Java 版本。有没有其他方法可以做到这一点?
问题是Dockerfile中的每一个RUN
命令都是在一个新的bash环境中执行的,因此您需要将最后两个命令放在同一行中,如下所示:
运行bash$HOME/.sdkman/bin/sdkman-init.sh
要使sdk命令可用,您需要运行< code > source SDK man-init . sh 。
这里是一个在centos上使用java11的工作示例。
FROM centos:latest
ARG CANDIDATE=java
ARG CANDIDATE_VERSION=11.0.6-open
ENV SDKMAN_DIR=/root/.sdkman
# update the image
RUN yum -y upgrade
# install requirements, install and configure sdkman
# see https://sdkman.io/usage for configuration options
RUN yum -y install curl ca-certificates zip unzip openssl which findutils && \
update-ca-trust && \
curl -s "https://get.sdkman.io" | bash && \
echo "sdkman_auto_answer=true" > $SDKMAN_DIR/etc/config && \
echo "sdkman_auto_selfupdate=false" >> $SDKMAN_DIR/etc/config
# Source sdkman to make the sdk command available and install candidate
RUN bash -c "source $SDKMAN_DIR/bin/sdkman-init.sh && sdk install $CANDIDATE $CANDIDATE_VERSION"
# Add candidate path to $PATH environment variable
ENV JAVA_HOME="$SDKMAN_DIR/candidates/java/current"
ENV PATH="$JAVA_HOME/bin:$PATH"
ENTRYPOINT ["/bin/bash", "-c", "source $SDKMAN_DIR/bin/sdkman-init.sh && \"$@\"", "-s"]
CMD ["sdk", "help"]
将采取哪些步骤再现这一问题? 安装SDKMAN(https://SDKMAN.io)命令行工具 使用sdkman安装一个或多个JDK,例如:sdk install java 8.0.232-zulu 在IntelliJ IDEA中打开项目 导航到“Set home directory for JDK”窗口:File?Project Structure?SDKs?+(button)?jdk 选择“显
问题内容: 我无法在Docker中安装pip。 这是我的Dockerfile: 建造时,我得到: 阅读此答案后,我尝试添加该行-这次的错误是: 我究竟做错了什么?我已经看到一些主张我应该尝试不同版本的Ubuntu的说法,但是切换到13.1并没有任何改变。 问题答案: 虽然T. Arboreus的答案可能会解决'archive.ubuntu.com‘来解决问题,但我认为您遇到的最后一个错误是它不知道
问题内容: 我是Docker的新手,但是必须维护现有系统。我正在使用的Dockerfile如下所示: 当我运行“ docker build [sitename]”时,一切正常,直到出现错误: 此错误的原因是什么? 问题答案: 您应该将软件包添加到您的: 然后使用转到目录并运行: 在我的情况下有效: 让我知道您是否遇到任何错误。 编辑: 您应该会看到以下内容: 编辑2: 只是仔细检查所有内容: 请以
问题内容: 我在Docker容器中安装了Jenkins,但它不会自动运行。我必须运行/etc/init.d/jenkins start。然后一切都变得顺畅而美好。我遵循的所有教程都说,安装后应默认运行,但不是。 有什么想法吗? 问题答案: 如果你喜欢在各种詹金斯图像的Dockerfile(如官方一个),你会发现为什么詹金斯“自动运行”: ( 是用于采用僵尸进程的脚本,这是我之前在“ [ ”中介绍的
首先,让我声明我不是Linux用户中最有道德的,所以对我来说...下面是我所采取的所有步骤的简要说明。最终的问题/问题是,我似乎不可能下载一个合适的docker-compose安装。 null null “第1行:not:未找到命令”。 docker-compose文件的大小似乎只有9KB。因为这就是我每次使用上面提到的docker-compose安装序列时得到的结果。 这个问题在这里得到了解决:
我有一个laravel/php docker图像,我将其更新为php 8.1-我现在正试图返回到我们的项目版本7.3,但不会工作。 这是我的YAML 这是我的文件 我已经删除了docker缓存 但是我确实在运行时在构建中看到“59bf1c3509f3已经存在”。完成后,我拥有最新版本的PHP 8.13 那么,它可能是我没有清理的其他地方的另一个缓存吗?或者如何强制安装PHP 7.2到7.3
我是django、docker和scrapy的新手,我正在尝试运行一个也使用scrapy的django应用程序(我基本上创建了一个django应用程序,它也是一个scrapy应用程序,并尝试从django视图调用蜘蛛)。尽管在需求中指定了这个。txt和从Dockerfile运行pip,在运行和django应用程序在系统检查期间失败,导致web容器退出,原因是以下异常: 我尝试使用而不是pip,,更
这是我第一次尝试创建Docker形象,我希望有人能帮助我。我的Dockerfile大致如下所示: 基本上,我只是为了扩展jar文件而安装Java。运行makefile时,出现以下错误: /bin/sh:1:/usr/lib/jvm/java-7-openjdk-amd64:权限被拒绝 我一直试图效仿这个例子:https://registry.hub.docker.com/u/barnybug/op