环境:MAC OS X 10.12.1 + Docker 1.12.1
$ cd /Users/maping/mygit/dockerbook-code/code/5/sample/
$ cat Dockerfile
FROM ubuntu:16.04
MAINTAINER James Turnbull "james@example.com"
ENV REFRESHED_AT 2014-06-01
RUN apt-get -yqq update && apt-get -yqq install nginx
RUN mkdir -p /var/www/html/website
ADD nginx/global.conf /etc/nginx/conf.d/
ADD nginx/nginx.conf /etc/nginx/
EXPOSE 80
$ cat global.conf
server {
listen 0.0.0.0:80;
server_name _;
root /var/www/html/website;
index index.html index.htm;
access_log /var/log/nginx/default_access.log;
error_log /var/log/nginx/default_error.log;
}
$ cat nginx.conf
user www-data;
worker_processes 4;
pid /run/nginx.pid;
daemon off;
events { }
http {
sendfile on;
tcp_nopush on;
tcp_nodelay on;
keepalive_timeout 65;
types_hash_max_size 2048;
include /etc/nginx/mime.types;
default_type application/octet-stream;
access_log /var/log/nginx/access.log;
error_log /var/log/nginx/error.log;
gzip on;
gzip_disable "msie6";
include /etc/nginx/conf.d/*.conf;
}
说明:daemon off; 选项阻止 Nginx 进入后台,强制其在前台运行。
这样做是为了保持 Docker 容器的活跃状态,否则,默认情况下 Nginx 会以守护进程的方式启动,当守护进程被 fork 启动后,发起守护进程的原始进程就会退出,这时容器就停止了。
$ docker build -t jamtur01/nginx .
$ docker history jamtur01/nginx
$ docker run -d -p 80 --name website -v $PWD/website:/var/www/html/website jamtur01/nginx nginx
-v 选项允许将宿主机的目录作为卷,挂载到容器里。
或者
$ docker run -d -p 80 --name website -v $PWD/website:/var/www/html/website:ro jamtur01/nginx nginx
使目录 /var/www/html/website 变成只读状态。
当我们不想把源代码构建到镜像中时,就体现出卷的价值了。
$ cat $PWD/website/index.html // 一个静态的 html 文件
$ docker ps
访问 http://localhost:<port>
$ vim $PWD/website/index.html // 修改网站
直接刷新浏览器,可以看到修改结果。
$ cd /Users/maping/mygit/dockerbook-code/code/5/sample/
$ cat Dockerfile
FROM ubuntu:16.04
MAINTAINER James Turnbull "james@example.com"
ENV REFRESHED_AT 2014-06-01
RUN apt-get -yqq update && apt-get -yqq install nginx
RUN mkdir -p /var/www/html/website
ADD nginx/global.conf /etc/nginx/conf.d/
ADD nginx/nginx.conf /etc/nginx/
EXPOSE 80
$ cat global.conf
server {
listen 0.0.0.0:80;
server_name _;
root /var/www/html/website;
index index.html index.htm;
access_log /var/log/nginx/default_access.log;
error_log /var/log/nginx/default_error.log;
}
$ cat nginx.conf
user www-data;
worker_processes 4;
pid /run/nginx.pid;
daemon off;
events { }
http {
sendfile on;
tcp_nopush on;
tcp_nodelay on;
keepalive_timeout 65;
types_hash_max_size 2048;
include /etc/nginx/mime.types;
default_type application/octet-stream;
access_log /var/log/nginx/access.log;
error_log /var/log/nginx/error.log;
gzip on;
gzip_disable "msie6";
include /etc/nginx/conf.d/*.conf;
}
说明:daemon off; 选项阻止 Nginx 进入后台,强制其在前台运行。
这样做是为了保持 Docker 容器的活跃状态,否则,默认情况下 Nginx 会以守护进程的方式启动,当守护进程被 fork 启动后,发起守护进程的原始进程就会退出,这时容器就停止了。
$ docker build -t jamtur01/nginx .
$ docker history jamtur01/nginx
$ docker run -d -p 80 --name website -v $PWD/website:/var/www/html/website jamtur01/nginx nginx
-v 选项允许将宿主机的目录作为卷,挂载到容器里。
或者
$ docker run -d -p 80 --name website -v $PWD/website:/var/www/html/website:ro jamtur01/nginx nginx
使目录 /var/www/html/website 变成只读状态。
当我们不想把源代码构建到镜像中时,就体现出卷的价值了。
$ cat $PWD/website/index.html // 一个静态的 html 文件
$ docker ps
访问 http://localhost:<port>
$ vim $PWD/website/index.html // 修改网站
直接刷新浏览器,可以看到修改结果。
没有评论:
发表评论