2016-11-13 2 views
2
Dockerngx_http_image_filter_module 모듈로 구성하는 데 도움을주세요.

Docker + Nginx + ngx_http_image_filter_module

Nginx로 이미지 미리보기 이미지를 만들고 싶습니다. 나는 이것을 위해 ngx_http_image_filter_module이 필요하다는 것을 알고있다. DockerfileNginx standard container에 대해 살펴보면 이미 nginx-module-image-filter으로 빌드되어있는 것을 볼 수 있습니다. (필자는 그것이 필요한 것이라고 생각합니다.) 나는이 컨테이너를 시작하지 않습니다 Nginx에 설정 고정 표시기 image_filter resize 100 100를 사용하려고하고 오류가 발생합니다 때 :

nginx_1 | 2016/11/13 13:28:28 [emerg] 1#1: unknown directive "image_filter" in /etc/nginx/conf.d/nginx.conf:34

nginx_1 | nginx: [emerg] unknown directive "image_filter" in /etc/nginx/conf.d/nginx.conf:34

이미 내 자신의 Dockerfile과 용기를 구축하는 시도를하지만, 아무것도 변경되지 않습니다. 나는이 Dockerfile을 사용 :

FROM nginx 

RUN apt-get update 

RUN apt-get install --no-install-recommends --no-install-suggests -y \ 
         nginx-module-image-filter 

내 호스트 설정 (/etc/nginx/conf.d/ 아래에 위치)

server { 
    listen 80; 

    location /images/originals/ { 
    alias /site/storage/app/public/images/originals/; 
    image_filter resize 100 100; 
    } 
} 

업데이트

Nginx에의 설정 (표준)

user nginx; 
worker_processes 1; 

error_log /var/log/nginx/error.log warn; 
pid  /var/run/nginx.pid; 


events { 
    worker_connections 1024; 
} 


http { 
    include  /etc/nginx/mime.types; 
    default_type application/octet-stream; 

    log_format main '$remote_addr - $remote_user [$time_local] "$request" ' 
         '$status $body_bytes_sent "$http_referer" ' 
         '"$http_user_agent" "$http_x_forwarded_for"'; 

    access_log /var/log/nginx/access.log main; 

    sendfile  on; 
    #tcp_nopush  on; 

    keepalive_timeout 65; 

    #gzip on; 

    include /etc/nginx/conf.d/*.conf; 
} 
우리가 볼 수 있듯이

[email protected]:/etc/nginx/conf.d# nginx -V

nginx version: nginx/1.11.5

built by gcc 4.9.2 (Debian 4.9.2-10)

built with OpenSSL 1.0.1t 3 May 2016

TLS SNI support enabled

configure arguments: --prefix=/etc/nginx --sbin-path=/usr/sbin/nginx --modules-path=/usr/lib/nginx/modules --conf-path=/etc/nginx/nginx.conf --error-log-path=/var/log/nginx/error.log --http-log-path=/var/log/nginx/access.log --pid-path=/var/run/nginx.pid --lock-path=/var/run/nginx.lock --http-client-body-temp-path=/var/cache/nginx/client_temp --http-proxy-temp-path=/var/cache/nginx/proxy_temp --http-fastcgi-temp-path=/var/cache/nginx/fastcgi_temp --http-uwsgi-temp-path=/var/cache/nginx/uwsgi_temp --http-scgi-temp-path=/var/cache/nginx/scgi_temp --user=nginx --group=nginx --with-compat --with-file-aio --with-threads --with-http_addition_module --with-http_auth_request_module --with-http_dav_module --with-http_flv_module --with-http_gunzip_module --with-http_gzip_static_module --with-http_mp4_module --with-http_random_index_module --with-http_realip_module --with-http_secure_link_module --with-http_slice_module --with-http_ssl_module --with-http_stub_status_module --with-http_sub_module --with-http_v2_module --with-mail --with-mail_ssl_module --with-stream --with-stream_realip_module --with-stream_ssl_module --with-stream_ssl_preread_module --with-cc-opt='-g -O2 -fstack-protector-strong -Wformat -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2' --with-ld-opt='-Wl,-z,relro -Wl,-z,now -Wl,--as-needed'

여기에는 이미지 필터 모듈이 없다 : 나는 nginx를 용기에 비난과 nginx -V을 실행하면

, BTW 나는 다음과 같은 얻을.

업데이트 2

apt-get을 설치 nginx를-엑스트라-DBG

[email protected]:/# apt-get install nginx-extras-dbg 
Reading package lists... Done 
Building dependency tree 
Reading state information... Done 
The following extra packages will be installed: 
    init-system-helpers libluajit-5.1-2 libluajit-5.1-common nginx-common nginx-extras 
Suggested packages: 
    fcgiwrap nginx-doc ssl-cert 
The following NEW packages will be installed: 
    init-system-helpers libluajit-5.1-2 libluajit-5.1-common nginx-common nginx-extras nginx-extras-dbg 
0 upgraded, 6 newly installed, 0 to remove and 10 not upgraded. 
Need to get 5920 kB of archives. 
After this operation, 7880 kB of additional disk space will be used. 
Do you want to continue? [Y/n] Y 
Get:1 http://security.debian.org/ jessie/updates/main nginx-common all 1.6.2-5+deb8u4 [88.1 kB] 
Get:2 http://security.debian.org/ jessie/updates/main nginx-extras amd64 1.6.2-5+deb8u4 [595 kB] 
Get:3 http://security.debian.org/ jessie/updates/main nginx-extras-dbg amd64 1.6.2-5+deb8u4 [4982 kB] 
Get:4 http://httpredir.debian.org/debian/ jessie/main libluajit-5.1-common all 2.0.3+dfsg-3 [36.6 kB] 
Get:5 http://httpredir.debian.org/debian/ jessie/main libluajit-5.1-2 amd64 2.0.3+dfsg-3 [204 kB] 
Get:6 http://httpredir.debian.org/debian/ jessie/main init-system-helpers all 1.22 [14.0 kB] 
Fetched 5920 kB in 6s (967 kB/s) 
debconf: delaying package configuration, since apt-utils is not installed 
Selecting previously unselected package libluajit-5.1-common. 
(Reading database ... 9747 files and directories currently installed.) 
Preparing to unpack .../libluajit-5.1-common_2.0.3+dfsg-3_all.deb ... 
Unpacking libluajit-5.1-common (2.0.3+dfsg-3) ... 
Selecting previously unselected package libluajit-5.1-2:amd64. 
Preparing to unpack .../libluajit-5.1-2_2.0.3+dfsg-3_amd64.deb ... 
Unpacking libluajit-5.1-2:amd64 (2.0.3+dfsg-3) ... 
Selecting previously unselected package init-system-helpers. 
Preparing to unpack .../init-system-helpers_1.22_all.deb ... 
Unpacking init-system-helpers (1.22) ... 
Selecting previously unselected package nginx-common. 
Preparing to unpack .../nginx-common_1.6.2-5+deb8u4_all.deb ... 
Unpacking nginx-common (1.6.2-5+deb8u4) ... 
dpkg: error processing archive /var/cache/apt/archives/nginx-common_1.6.2-5+deb8u4_all.deb (--unpack): 
trying to overwrite '/etc/nginx/scgi_params', which is also in package nginx 1.11.5-1~jessie 
dpkg-deb: error: subprocess paste was killed by signal (Broken pipe) 
Selecting previously unselected package nginx-extras. 
Preparing to unpack .../nginx-extras_1.6.2-5+deb8u4_amd64.deb ... 
Unpacking nginx-extras (1.6.2-5+deb8u4) ... 
dpkg: error processing archive /var/cache/apt/archives/nginx-extras_1.6.2-5+deb8u4_amd64.deb (--unpack): 
trying to overwrite '/usr/sbin/nginx', which is also in package nginx 1.11.5-1~jessie 
dpkg-deb: error: subprocess paste was killed by signal (Broken pipe) 
Selecting previously unselected package nginx-extras-dbg. 
Preparing to unpack .../nginx-extras-dbg_1.6.2-5+deb8u4_amd64.deb ... 
Unpacking nginx-extras-dbg (1.6.2-5+deb8u4) ... 
Errors were encountered while processing: 
/var/cache/apt/archives/nginx-common_1.6.2-5+deb8u4_all.deb 
/var/cache/apt/archives/nginx-extras_1.6.2-5+deb8u4_amd64.deb 
E: Sub-process /usr/bin/dpkg returned an error code (1) 

apt-get을 설치 libGD 라이브러리-DEV

[email protected]:/# apt-get install libgd-dev 
Reading package lists... Done 
Building dependency tree 
Reading state information... Done 
You might want to run 'apt-get -f install' to correct these: 
The following packages have unmet dependencies: 
libgd-dev : Depends: libgd3 (= 2.1.0-5+deb8u7) but 2.1.0-5+deb8u6 is to be installed 
      Depends: libpng-dev 
      Depends: libz-dev 
      Depends: libjpeg-dev 
      Depends: libfreetype6-dev but it is not going to be installed 
      Depends: libxpm-dev but it is not going to be installed 
      Depends: libx11-dev but it is not going to be installed 
      Depends: libxt-dev but it is not going to be installed 
      Depends: libfontconfig-dev 
      Depends: libvpx-dev but it is not going to be installed 
      Depends: libtiff-dev 
nginx-extras-dbg : Depends: nginx-extras (= 1.6.2-5+deb8u4) but it is not going to be installed 
E: Unmet dependencies. Try 'apt-get -f install' with no packages (or specify a solution). 

apt-get을 -f 설치

[email protected]:/# apt-get -f install 
Reading package lists... Done 
Building dependency tree 
Reading state information... Done 
Correcting dependencies... Done 
The following extra packages will be installed: 
    nginx-common nginx-extras 
Suggested packages: 
    fcgiwrap nginx-doc ssl-cert 
The following NEW packages will be installed: 
    nginx-common nginx-extras 
0 upgraded, 2 newly installed, 0 to remove and 10 not upgraded. 
4 not fully installed or removed. 
Need to get 683 kB of archives. 
After this operation, 1812 kB of additional disk space will be used. 
Do you want to continue? [Y/n] Y 
Get:1 http://security.debian.org/ jessie/updates/main nginx-common all 1.6.2-5+deb8u4 [88.1 kB] 
Get:2 http://security.debian.org/ jessie/updates/main nginx-extras amd64 1.6.2-5+deb8u4 [595 kB] 
Fetched 683 kB in 0s (1444 kB/s) 
debconf: delaying package configuration, since apt-utils is not installed 
(Reading database ... 9786 files and directories currently installed.) 
Preparing to unpack .../nginx-common_1.6.2-5+deb8u4_all.deb ... 
Unpacking nginx-common (1.6.2-5+deb8u4) ... 
dpkg: error processing archive /var/cache/apt/archives/nginx-common_1.6.2-5+deb8u4_all.deb (--unpack): 
trying to overwrite '/etc/nginx/scgi_params', which is also in package nginx 1.11.5-1~jessie 
dpkg-deb: error: subprocess paste was killed by signal (Broken pipe) 
Preparing to unpack .../nginx-extras_1.6.2-5+deb8u4_amd64.deb ... 
Unpacking nginx-extras (1.6.2-5+deb8u4) ... 
dpkg: error processing archive /var/cache/apt/archives/nginx-extras_1.6.2-5+deb8u4_amd64.deb (--unpack): 
trying to overwrite '/usr/sbin/nginx', which is also in package nginx 1.11.5-1~jessie 
dpkg-deb: error: subprocess paste was killed by signal (Broken pipe) 
Errors were encountered while processing: 
/var/cache/apt/archives/nginx-common_1.6.2-5+deb8u4_all.deb 
/var/cache/apt/archives/nginx-extras_1.6.2-5+deb8u4_amd64.deb 
E: Sub-process /usr/bin/dpkg returned an error code (1) 

업데이트 3

나는 모든 것을 정리 모든 이미지와 컨테이너를 삭제하고 처음부터 다시 시작했습니다.

내 nginx를 컨테이너이 고정 표시기-작성 파일을 사용하고 있습니다 :

nginx: 
    image: nginx 
    build: 
     context: ./env/nginx 
    ports: 
     - '80:80' 
    volumes: 
     - ./env/nginx/abmotors.conf:/etc/nginx/conf.d/abmotors.conf:ro 

이 ./env/nginx에있는 Dockerfile (Nginx에 컨테이너를 구축하기위한)

FROM nginx 

RUN apt-get update 

RUN apt-get install --no-install-recommends --no-install-suggests -y \ 
         libgd-dev \ 
         nginx-module-image-filter 

모든 것이 축적되어 ,하지만 달려서 nginx 컨테이너에 부딪쳐서

libgd 또는 이미지 필터 모듈에 대한 정보가 없습니다.

미리 감사드립니다.

+0

전체 nginx.conf를 게시 할 수 있습니까? nginx.conf에 서버 지시문을 추가하려고하면 다음과 같은 오류가 발생합니다. - nginx : [emerg] "server"지시어는 /etc/nginx/nginx.conf에 허용되지 않습니다. 34 ' –

+0

@ YaronIdan very sorry 내 잘못된 설명 때문이야. 그건 nginx.conf 내용이 아니라 내 호스트 구성의 내용입니다. 게시물을 업데이트했습니다. 또한'nginx -V' 명령의 출력을 추가했습니다. –

+0

@YaronIdan 이해가된다면 내 '도커 - 작성자 .yml'을 보여줄 수 있습니다. –

답변

5

Nginx는 1.9.11에서 동적 모듈을 도입했으며 "이미지 필터"는 동적 모듈 중 하나 일뿐입니다.

$ docker run -it --rm nginx:mainline ls -l /etc/nginx/modules/ | grep image 
-rw-r--r-- 1 root root 23536 Oct 11 15:54 ngx_http_image_filter_module-debug.so 
-rw-r--r-- 1 root root 23536 Oct 11 15:54 ngx_http_image_filter_module.so 

을하지만 그것이 "옵션"으로 간주되기 때문에 모듈은 기본 Nginx에 루트 구성 파일 /etc/nginx/nginx.conf에 의해로드되지 않습니다

Nginx의 표준 도커 이미지는 이미 제공한다. 당신이해야 할 것은 그 파일에 다음 행을 추가하는 것입니다 최상위 레벨에

load_module /etc/nginx/modules/ngx_http_image_filter_module.so; 

! 여기서는 daemon, user, http이 정의됩니다.

+0

알렉산더를 참조하십시오, 지금 오류가없는 것 같습니다. 나는 약간의 연구와 테스트를하고 피드백을 남길 것이다. 고마워요;) –

+1

알렉산더, 그것은 매력처럼 일했습니다! 나는 지금 매우 행복합니다,이 팁을 주셔서 대단히 감사합니다! –

+0

21 시간 내에 현상금을 수령 할 수 있으므로 기다려야합니다. –

0

아마 libdg 모듈을 설치해야합니다. 설명서 참조 here

sudo apt-get install nginx-extras-dbg으로 설치하고 다시 컴파일하십시오.

+0

나는이 모든 것을 시도했다 : apt-get -f install. 그러나 뭔가 잘못되고있는 것처럼 보입니다. 내 게시물을 결과로 업데이트했습니다.보십시오. –

+0

모든 것을 정리했습니다 - 모든 이미지와 컨테이너를 삭제했습니다. 몇 분 후에 처음부터 시작하여 결과를 게시 할 것입니다. –

+0

@msj 나는 또한 그것을 찾고있다 –

관련 문제