2015-09-13 111 views
1

我刚刚在读docker文件HERE了解postgresql的一个简单的dockerfile

和基本Dockerfile看起来像如下:

FROM postgres:9.1 
MAINTAINER Mike Dillon <[email protected]> 

ENV POSTGIS_MAJOR 2.1 
ENV POSTGIS_VERSION 2.1.7+dfsg-3~94.git954a8d0.pgdg80+1 

RUN apt-get update \ 
     && apt-get install -y --no-install-recommends \ 
      postgresql-$PG_MAJOR-postgis-$POSTGIS_MAJOR=$POSTGIS_VERSION \ 
      postgis=$POSTGIS_VERSION \ 
     && rm -rf /var/lib/apt/lists/* 

RUN mkdir -p /docker-entrypoint-initdb.d 
COPY ./initdb-postgis.sh /docker-entrypoint-initdb.d/postgis.sh 

我要确保我已经解释了以下正确两条命令:

RUN mkdir -p /docker-entrypoint-initdb.d 
COPY ./initdb-postgis.sh /docker-entrypoint-initdb.d/postgis.sh 

运行命令运行mkdir命令,表示当前目录将有一个子目录称为:

/docker-entrypoint-initdb.d 

和下一个命令I.E. COPY命令的目录./initdb-postgis.sh的内容正在被复制到/docker-entrypoint-initdb.d/postgis.sh,我说得对吗?

回答

2

RUN cmd用于执行cmd命令,并将为您正在构建的图像创建并提交一个新图层。所以这些命令在正在构建的映像的上下文中运行。 mkdir -p /docker-entrypoint-initdb.d将在图像的根目录中创建一个新文件夹docker-entrypoint-initdb.dCOPY ./initdb-postgis.sh /docker-entrypoint-initdb.d/postgis.sh将复制文件initdb-postgis.sh(必须位于与运行docker build command相同级别的文件到容器内的文件/docker-entrypoint-initdb.d/postgis.sh中。