/
Dockefile.example
37 lines (30 loc) · 1.5 KB
/
Dockefile.example
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
# 一条指令构建一层
一般来说,应该会将 Dockerfile 置于一个空目录下,或者项目根目录下。如果该目录下没
有所需文件,那么应该把所需文件复制一份过来。如果目录下有些东西确实不希望构建时传
给 Docker 引擎,那么可以用 .gitignore 一样的语法写一个 .dockerignore ,该文件是用于
剔除不需要作为上下文传递给 Docker 引擎的。
那么为什么会有人误以为 . 是指定 Dockerfile 所在目录呢?这是因为在默认情况下,如果
不额外指定 Dockerfile 的话,会将上下文目录下的名为 Dockerfile 的文件作为
Dockerfile。
这只是默认行为,实际上 Dockerfile 的文件名并不要求必须为 Dockerfile ,而且并不要求
必须位于上下文目录中,比如可以用 -f ../Dockerfile.php 参数指定某个文件作为
Dockerfile 。
# 1.
FROM nginx
RUN echo '<h1>Hello, Docker!</h1>' > /usr/share/nginx/html/index.html
# docker build -t nginx:v3 .
# docker build http://server/context.tar.gz
# 2.
FROM debian:jessie
RUN buildDeps='gcc libc6-dev make' \
&& apt-get update \
&& apt-get install -y $buildDeps \
&& wget -O redis.tar.gz "http://download.redis.io/releases/redis-3.2.5.tar.gz" \
&& mkdir -p /usr/src/redis \
&& tar -xzf redis.tar.gz -C /usr/src/redis --strip-components=1 \
&& make -C /usr/src/redis \
&& make -C /usr/src/redis install \
&& rm -rf /var/lib/apt/lists/* \
&& rm redis.tar.gz \
&& rm -r /usr/src/redis \
&& apt-get purge -y --auto-remove $buildDeps