我正在练习Docker in Practice第3章中提供的示例。 下面是使用postgres运行docker时提到的Dockerfile。
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
答案 0 :(得分:1)
COPY db /opt/db
应该从您当前的上下文(您正在执行的文件夹db
)中复制docker build
因此,请确保当前文件夹确实实际包含db
文件夹。