167 docker docker nginx 용기 시리즈 구축 문제

7340 단어 Nginxdocker
질문
background: 최근 에 어린이 들 을 위해 docker 시리즈 의 기술 공 유 를 계획 하고 docker 관련 기술 을 연 구 했 습 니 다. 여기 서 nginx 용 기 를 구축 할 때의 구 덩이 를 기록 하 겠 습 니 다.
1. nginx 서버 루트 디 렉 터 리 문제
docker 공식 미 러 가 제공 하 는 nginx 는 debian / jessie 플랫폼 을 바탕 으로 파일 구조 가 ubuntu 의 nginx 와 다 릅 니 다.
eg:
niginx 용 기 를 실행 합 니 다.
//80     ,so...
$ sudo docker run -it -p 800:800 nginx
$ sudo docker ps 

CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                                   NAMES
1801a32aab54        nginx               "nginx -g 'daemon off"   2 minutes ago       Up 2 minutes        80/tcp, 443/tcp, 0.0.0.0:800->800/tcp   berserk_kare

용기 내부 로 들어가다
$ sudo docker exec -it 1801a32aab54 /bin/bash
root@1801a32aab54:/# 

nginx 디 렉 터 리 보기
# cd /etc/nginx/
conf.d/         koi-utf         mime.types      nginx.conf      uwsgi_params    
fastcgi_params  koi-win         modules/        scgi_params     win-utf  

익숙 하지 않 은 / sites - available 뿐만 아니 라 / sites - enabled 도 볼 수 있 습 니 다.
nginx 설정 계속 보기
# cat /conf.d/default.conf
server {
    listen       80;
    server_name  localhost;

    #charset koi8-r;
    #access_log  /var/log/nginx/log/host.access.log  main;

    location / {
        root   /usr/share/nginx/html;
        index  index.html index.htm;
    }

    #error_page  404              /404.html;

    # redirect server error pages to the static page /50x.html
    #
    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
        root   /usr/share/nginx/html;
    }
    #...  php-fpm  ,  ..
}

루트 디 렉 터 리 설정: 루트 / usr / share / nginx / html;
테스트
# cd /usr/share/nginx/html
# touch index.html
# echo "test nginx in docker" >index.html

브 라 우 저 에 localhost 를 입력 하거나 terminal 에 입력 하 십시오.
curl localhost

2. php - fpm 설정 관련: php 파일 보고 요청 502
우선 php 설정 의 디 렉 터 리 구조 가 ubuntu 와 다른 것 을 발 견 했 습 니 다. dockerfile 의 설정 은 다음 과 같 습 니 다.
ADD php.ini    /usr/local/etc/php/php.ini
ADD php-fpm.conf    /usr/local/etc/php-fpm.conf

nginx 용기 진입
$ docker ps 
# docker exec -it xxx /bin/bash

niginx 로그 들 어가 기
# cd /var/www/log
# tail -f error.log 

비어 있 는 것 으로 보 입 니 다. log 경 로 를 잘못 찾 았 습 니 다.
# cd /opt/log/nginx
# tail -f error.log

2016/05/13 03:19:59 [crit] 6#6: *28 connect() to unix:/run/php/php7.0-fpm.sock failed (2: No such file or directory) while connecting to upstream, client: 172.17.0.1, server: _, request: "GET /index.php HTTP/1.1", upstream: "fastcgi://unix:/run/php/php7.0-fpm.sock:", host: "localhost"

문 제 는 / run / phop / phop 7.0 - fpm. sock 에 연결 되 지 않 습 니 다. nginx 와 phop 은 같은 호스트 에 있 지 않 습 니 다. Domain socket 통신 은 당연히 실현 되 지 않 습 니 다.
3. php 와 nginx 용기 연결 을 설정 하고 마 운 트 파일 자원 공유
밤 을 들 어 hsot 파일 자원 을 nginx 의 container 에 마 운 트 합 니 다.
// host  workspace   container           nginx          image   mynginx
# docker run -it -p 80:80 -v 
/home/jason/workspace:/var/www/html mynginx

host 의 workspace 디 렉 터 리 에 index. html 를 추가 하고 접근 합 니 다.
$ cd ~/workspace && touch index.html
$ echo "index in host">index.html

//   host nginx        
$ curl localhost
index in host 

마 운 트 성공
마 운 트 자원 을 php - fpm / container 에 두 고 – link 로 nginx 를 연결 하면 – volumes - from 을 사용 하여 php / container 마 운 트 디 렉 터 리 를 nginx 에 마 운 트 합 니 다.
//run   php-fpm      host    
# docker run -p 9000:9000 -v ~/opt:/var/www --name phpfpm -it fancive/php
//run   nginx    php    
# docker run --name nginx_server -d -p 80:80 --link phpfpm:phpfpm --volumes-from phpfpm  fancive/nginx

테스트 해 봐.
$ curl localhost
index in host

성공 하 다

좋은 웹페이지 즐겨찾기