在ubuntubase docker上运行postgres时出错

我正在练习“Docker in Practice”一书中提供的示例。下面是Dockerfile提到的用于运行docker的postgres。

FROM ubuntu:14.04 RUN apt-get update \ && DEBIAN_FRONTEND=noninteractive apt-get install -y \ postgresql \ && apt-get clean \ && rm -rf /var/lib/apt/lists/* WORKDIR /opt COPY db /opt/db RUN service postgresql start && \ cat db/schema.sql | psql && \ service postgresql stop 

但是在步骤4中的副本给了我下面的错误。

  $ sudo docker build -t db . Sending build context to Docker daemon 2.048kB Step 1/4 : FROM ubuntu:14.04 ---> c69811d4e993 Step 2/4 : RUN apt-get update && DEBIAN_FRONTEND=noninteractive apt-get install -y postgresql && apt-get clean && rm -rf /var/lib/apt/lists/* ---> Using cache ---> 2ac4ff885d29 Step 3/4 : COPY db /opt/db COPY failed: stat /var/lib/docker/tmp/docker-builder554911929/db: no such file or directory 

当我评论COPY命令时,我得到了不同的错误。

  Step 4/4 : RUN service postgresql start && cat db/schema.sql | psql && service postgresql stop ---> Running in 79e47b45c41a * Starting PostgreSQL 9.3 database server ...done. cat: db/schema.sql: No such file or directory psql: FATAL: role "root" does not exist 

COPY db /opt/db应该从你当前的上下文中拷贝db (你正在执行docker build的文件夹)

所以确保当前的文件夹确实包含了db文件夹。