167 docker docker nginx 용기 시리즈 구축 문제
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
성공 하 다
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
linux2에 nginx 설치설치 가능한 nginx를 확인하고, 해당 nginx를 설치한다. localhost 혹은 해당 ip로 접속을 하면 nginx 화면을 볼 수 있다....
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.