2017-09-30 2 views
0

this 프로젝트의 경우 fpm으로 PHP 응용 프로그램을 실행하려고합니다. 그리고 fgin 기반 솔루션을 실행하기 위해 nginx 이미지를 만들려고합니다. 내 docker-compose.yml은 다음과 같습니다Docker nginx & fpm : 내 nginx에서 오류 404

version: '2' 
services: 

# apache based images 

    # A base image for apache - based moodle builds 
    moodle_apache_base: 
     build: 
     context: . 
     dockerfile: dockerfiles/apache/Dockerfile_base 
     image: ellakcy/moodle:apache_base 

    # Mysql running variant 
    moodle_mysql_db: 
    image: mysql 
    environment: 
     MYSQL_RANDOM_ROOT_PASSWORD: "yes" 
     MYSQL_ONETIME_PASSWORD: "yes" 
     MYSQL_DATABASE: "${MOODLE_DB_NAME}" 
     MYSQL_USER: '${MOODLE_MYSQL_USER}' 
     MYSQL_PASSWORD: '${MOODLE_MYSQL_PASSWORD}' 

    moodle_mysql: 
    build: 
     context: . 
     dockerfile: dockerfiles/apache/Dockerfile_mysql 
    image: ellakcy/moodle:mysql_maria_apache 
    links: 
     - "moodle_mysql_db:moodle_db" 
     - "moodle_apache_base" 
    ports: 
     - "6080:80" 
    environment: 
     MOODLE_DB_HOST: "moodle_mysql_db" 
     MOODLE_DB_NAME: "${MOODLE_DB_NAME}" 
     MOODLE_DB_USER: '${MOODLE_MYSQL_USER}' 
     MOODLE_DB_PASSWORD: "${MOODLE_MYSQL_PASSWORD}" 
     MOODLE_ADMIN: "${MOODLE_ADMIN}" 
     MOODLE_ADMIN_PASSWORD: "${MOODLE_ADMIN_PASSWORD}" 
     MOODLE_URL: "http://0.0.0.0:6080" 

    # postgresql running variant 
    moodle_psql_db: 
    image: postgres 
    environment: 
     POSTGRES_DB: "${MOODLE_DB_NAME}" 
     POSTGRES_USER: '${MOODLE_MYSQL_USER}' 
     POSTGRES_PASSWORD: '${MOODLE_MYSQL_PASSWORD}' 

    moodle_psql: 
    build: 
     context: . 
     dockerfile: dockerfiles/apache/Dockerfile_postgrtesql 
    image: ellakcy/moodle:postgresql_apache 
    links: 
     - "moodle_psql_db:moodle_db" 
     - "moodle_apache_base" 
    ports: 
     - "6082:80" 
    environment: 
     MOODLE_DB_HOST: "moodle_psql_db" 
     MOODLE_DB_NAME: "${MOODLE_DB_NAME}" 
     MOODLE_DB_USER: '${MOODLE_MYSQL_USER}' 
     MOODLE_DB_PASSWORD: "${MOODLE_MYSQL_PASSWORD}" 
     MOODLE_ADMIN: "${MOODLE_ADMIN}" 
     MOODLE_ADMIN_PASSWORD: "${MOODLE_ADMIN_PASSWORD}" 
     MOODLE_URL: "http://0.0.0.0:6082" 

    # Testing mariadb support 
    moodle_maria_db: 
     image: mariadb 
     environment: 
     MYSQL_RANDOM_ROOT_PASSWORD: "yes" 
     MYSQL_ONETIME_PASSWORD: "yes" 
     MYSQL_DATABASE: "${MOODLE_DB_NAME}" 
     MYSQL_USER: '${MOODLE_MYSQL_USER}' 
     MYSQL_PASSWORD: '${MOODLE_MYSQL_PASSWORD}' 

    moodle_maria: 
     image: ellakcy/moodle:mysql_maria_apache 
     links: 
     - "moodle_mysql" 
     - "moodle_maria_db:moodle_db" 
     ports: 
     - "6081:80" 
     environment: 
     MOODLE_DB_HOST: "moodle_maria_db" 
     MOODLE_DB_NAME: "${MOODLE_DB_NAME}" 
     MOODLE_DB_USER: '${MOODLE_MYSQL_USER}' 
     MOODLE_DB_PASSWORD: "${MOODLE_MYSQL_PASSWORD}" 
     MOODLE_ADMIN: "${MOODLE_ADMIN}" 
     MOODLE_ADMIN_PASSWORD: "${MOODLE_ADMIN_PASSWORD}" 
     MOODLE_URL: "http://0.0.0.0:6081" 

#Alpine fpm based images 



    #Basic alpine fpm image 
    alpine_fpm_base: 
    build: 
     context: . 
     dockerfile: dockerfiles/fpm_alpine/Dockerfile_base 
    image: ellakcy/moodle:alpine_fpm_base 

    moodle_mysql_alpine_db: 
    image: mysql 
    environment: 
     MYSQL_RANDOM_ROOT_PASSWORD: "yes" 
     MYSQL_ONETIME_PASSWORD: "yes" 
     MYSQL_DATABASE: "${MOODLE_DB_NAME}" 
     MYSQL_USER: '${MOODLE_MYSQL_USER}' 
     MYSQL_PASSWORD: '${MOODLE_MYSQL_PASSWORD}' 

    # Mysql Enabled image 

    nginx: 
    image: nginx:alpine 
    ports: 
    - "7070:80" 
    volumes: 
    - './conf/nginx/nginx.conf:/etc/nginx/nginx.conf:ro' 
    links: 
    - 'moodle_mysql_alpine' 
    volumes_from: 
    - 'moodle_mysql_alpine' 

    moodle_mysql_alpine: 
    build: 
     context: . 
     dockerfile: dockerfiles/fpm_alpine/Dockerfile_mysql 
    image: ellakcy/moodle:mysql_maria_fpm_alpine 
    links: 
     - "moodle_mysql_alpine_db:moodle_db" 
     - "alpine_fpm_base" 
    environment: 
     MOODLE_DB_HOST: "moodle_mysql_alpine_db" 
     MOODLE_DB_NAME: "${MOODLE_DB_NAME}" 
     MOODLE_DB_USER: '${MOODLE_MYSQL_USER}' 
     MOODLE_DB_PASSWORD: "${MOODLE_MYSQL_PASSWORD}" 
     MOODLE_ADMIN: "${MOODLE_ADMIN}" 
     MOODLE_ADMIN_PASSWORD: "${MOODLE_ADMIN_PASSWORD}" 
     MOODLE_URL: "http://0.0.0.0:7070/moodle_mysql" 

그리고의 nginx의 구성은 다음과 같습니다

events { 
    worker_connections 768; 
} 

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

    charset utf-8; 

    gzip on; 
    gzip_disable "msie6"; 
    client_max_body_size 10000M; 

    server { 
    listen 80; 

    root /var/www/www; 
    index index.php; 

    location/{ 
     try_files $uri $uri/ =404; 
    } 

    location ~ \.php$ { 
     fastcgi_param GATEWAY_INTERFACE CGI/1.1; 
     fastcgi_param SERVER_SOFTWARE nginx; 
     fastcgi_param QUERY_STRING  $query_string; 
     fastcgi_param REQUEST_METHOD  $request_method; 
     fastcgi_param CONTENT_TYPE  $content_type; 
     fastcgi_param CONTENT_LENGTH  $content_length; 
     fastcgi_param DOCUMENT_ROOT  $document_root; 
     fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; 
     fastcgi_param SCRIPT_NAME  $fastcgi_script_name; 
     fastcgi_param REQUEST_URI  $request_uri; 
     fastcgi_param DOCUMENT_URI  $document_uri; 
     fastcgi_param SERVER_PROTOCOL $server_protocol; 
     fastcgi_param REMOTE_ADDR  $remote_addr; 
     fastcgi_param REMOTE_PORT  $remote_port; 
     fastcgi_param SERVER_ADDR  $server_addr; 
     fastcgi_param SERVER_PORT  $server_port; 
     fastcgi_param SERVER_NAME  $server_name; 
     fastcgi_param PATH_INFO $fastcgi_path_info; 
     fastcgi_read_timeout 600; 
     fastcgi_split_path_info ^(.+\.php)(/.+)$; 
     fastcgi_intercept_errors on; 
     fastcgi_index index.php; 
     fastcgi_pass moodle_mysql_alpine:9000; 
    } 
    } 
} 

그러나 상관없이 내가 할 시도한 내가 내 moodle_mysql_alpine이 nginx를 통해 제공받을 수 있도록 할 수없는 쓸모가 없다. 당신은 아이디어를 가지고 어떻게 봉사 할 수 있습니까? 또한이 파일은 이미지 리포지토리에 이미지를 업로드하기 위해 이미지를 작성하고 실행하기 위해 로컬 파일 시스템에 볼륨을 유지하는 데 신경 쓰지 않습니다.

+0

nginx 서비스 출력의 오류는 무엇입니까? 404에 방문하는 URL은 무엇입니까? –

+0

404가 발생할 때 로그를 표시하십시오. 모든 로그를 지우십시오. 404 요청 동안 답변을 받아 로그를 게시해야하는 요청을 클릭하십시오. –

답변

0

결국 나는 루트 폴더에서 잘못했다. /var/www/www 대신에 /var/www/html이었습니다. 그래서 nginx는 파일/볼륨이 마운트되어 있지 않기 때문에 404 페이지로 이동하게되었습니다.

+0

답변을 수락하여 해결 된 것으로 표시하십시오. – Robert

+1

내일은 초과했습니다. 나는 해결책으로 내 대답을 받아 들일 수있는 시간 제한입니다. –

관련 문제