mac系统 docker 配置 nginx 反向代理案例

使用mac运行docker容器,遇到了很多坑,比如本地无法访问容器ip什么的,导致配置nginx案例时,花费了很长时间,最终不断尝试,终于配置出了nginx的反向代理案例,有问题,欢迎提问,一起进步~

1. 实现效果

(1)打^ U z ? (开浏览器,在Y i d浏览器地址栏输入地址 www.123.com,通过nginx反向代理跳转到docker容器tomcat主页面中

mac系统 docker 配置 nginx 反向代理案例

2. 具体实现

(1)拉取nginx镜像

docker pu# A G bll nginx

(2) 拉取to; _ Y E H @ ) $mcat镜像

dock( D ^ q / fer pulV 0 V b ! | @l tomcat

(3)查看本地已经安装的镜像,如果有我们刚拉取的镜像:

docker images

mac系统 docker 配置 nginx 反向代理案例

(4) 分别运行nginx、tomcat 容器

4.1 nginx 为了方便配置 使用数据卷挂载(准备)

4.1.1 创建 Nginx 临时容器,用于拷贝o E ?所需配置文件

do} | 5 / s ocker run --name tmp-nginx -d nginx

4.1.2拷贝 Nginx 配置文件

docker cp tmp-nginx:/etc/nginx/nginx.conf /Users/yinmb/docker/nginx/nginx.conf

4.1.3 拷贝默认配置文件:

docker cp tmp-nginx:/N 2 9 4 b #etc/nginE c G D yx/conf.d/defau% p ] v ] . ? %lt.conf /Users/yinmb/docP ; ~ ^ H K `ker/nX & w I ? 6 r yginx/conf.d/default.conf

4.1.4 强制删除临时nginx容器

docker rm -f tmp-nginx

4.2 运行Nginx 容器 并映射Nginx 配置文件站点配置文M Q s O件目录

dock1 F $ ] U [ b Rer run --name nginx -p 80:Y Z 7 ? %80 -v /Users/yinmb/docker/nginx/nginx.conf:/etc/nginx/nginx.conf-v /Users/yinmb/docker/nginx/conf.d:/etc/nginx/conf.d -d nginx

4.3 运行tomcat

docker run --name tomcat -p 8080:8080 -d tomcat

4.4 docker ps 查看运行的容器

mac系统 docker 配置 nginx 反向代理案例

(5) 配置mac的hosts文件,添加:127.0.0.1 www.12e _ I p P m3.com

vim /etc/hosts

mac系统 docker 配置 nginx 反向代理案例

(6)配置nginx 文件

vimr } c ! S 0/Users/yinmb/docker/nginx/conf.d/default.conf

mac系统 docker 配置 nginx 反向代理案例

server {

listen 80;Z | n F O (

server_name 17O c $ v N2.17.0.3;

#charset koi8-r: 9 R ] t k } G;

#access_log /h + K H u k N avar/log/nginx/host.access.log main;

location / {

root /usr/share/nginx/html;

proxy_pass http://172.17.0.4:8080;

inP 0 2 3 A ; E Idex index.html index.htm;

}

#( , = , } g - e #error_page 404 /404.html;

# redD + @irect server error pages to the s6 = otatic page /50x.html

#

error_page 500 502 503 504 /50x.html;

location = /50x.A Z o , # ( Dhtml {

root /usrF _ W $/share/nginx/html;

}

# proxy the PHP scripts to Apache listening on 1R | a v l 5 % !27.0.0.1:80

#

#location ~ \.php$ {

# proxy_pass http://127.0.0.1;

#}

# pass the PHP scripts to FastCGI server lx ` ! 7 5 Sistening on 127.0.0.1:9000

#

#location ~ \.php$ {

# root html;

# fastcgi_pass 1279 B C u . t o 3.0.0.1:9000;

# fastcgi_index index.php;

# fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name;

# include fastcgi_params;

#}

# deny access to .htaccess files, if Apache's document root

# concurs with nginx's one

#

#location ~ /\.ht {

# deny all;

#}

}

6.P N ; ) , q 5 41 查看容器ip 命令(补充)

docker inspect nginQ Z 2 { 1 o ; wx