使用postgres和java构建docker

使用postgres和java构建docker,docker,centos,Docker,Centos,我想扩展docker()以添加java。 我尝试构建下一个dockerfile: FROM centos/postgresql-96-centos7 RUN yum update -y && \ yum install -y wget && \ yum install -y java-1.8.0-openjdk && \ yum clean all # Set environment variables. ENV HOME /root # D

我想扩展docker()以添加java。 我尝试构建下一个dockerfile:

FROM centos/postgresql-96-centos7

RUN yum update -y && \
yum install -y wget && \
yum install -y java-1.8.0-openjdk && \
yum clean all

# Set environment variables.
ENV HOME /root

# Define working directory.
WORKDIR /root

# Define default command.
CMD ["bash"]
使用命令:

docker image build -t centos_pgs_java .
但有一个错误:

Step 3/6 : RUN yum update -y && yum install -y wget && yum install -y java-1.8.0-openjdk && yum clean all
 ---> Running in d93a94a61a11
Loaded plugins: fastestmirror, ovl
ovl: Error while doing RPMdb copy-up:
[Errno 13] Permission denied: '/var/lib/rpm/Group'
You need to be root to perform this command.
The command '/bin/sh -c yum update -y && yum install -y wget && yum install -y java-1.8.0-openjdk && yum clean all' returned a non-zero code: 1
如何使用root访问权限在dockerfile中重写RUN命令?

根据文档:

用户指令设置用户名(或UID)和可选的 运行映像和任何运行时要使用的用户组(或GID),CMD 以及Dockerfile中的入口点说明

因此,您需要将用户更改为
root
,执行运行层并将用户返回到
centos/postgresql-96-centos7
docker image中定义的
26

最后的
Dockerfile
是:

FROM centos/postgresql-96-centos7

USER root

RUN yum update -y && \
yum install -y wget && \
yum install -y java-1.8.0-openjdk && \
yum clean all

USER 26

# Set environment variables.
ENV HOME /root

# Define working directory.
WORKDIR /root

# Define default command.
CMD ["bash"]

…为什么在数据库容器中需要JVM?感谢您的回复。映像构建成功,但有一个警告:您得到的警告是什么?它似乎被一些格式问题所隐藏。