Używam boot2docker, ponieważ używam Mac OSX. Nie wiem, w jaki sposób wyświetlać statyczne pliki za pomocą nginxa, które są uruchomione wewnątrz kontenera dokera (który zawiera także zasoby statyczne, takie jak mój html i js).Jak wyświetlać pliki statyczne za pomocą nginx w kontenerze dokowania?
mam cztery pojemniki dokowane czym obrócił się z tym Döcker-compose.yml:
web:
build: ./public
links:
- nodeapi1:nodeapi1
ports:
- "80:80"
nodeapi1:
build: ./api
links:
- redis
- db
ports:
- "5000:5000"
volumes:
- ./api:/data
redis:
image: redis:latest
ports:
- "6379:6379"
db:
image: postgres:latest
environment:
POSTGRES_USER: root
ports:
- "5432:5432"
To jest mój nginx.conf:
worker_processes auto;
daemon off;
events {
worker_connections 1024;
}
http {
server_tokens off;
upstream node-app {
ip_hash;
server 192.168.59.103:5000;
}
server {
listen 80;
index index.html;
root /var/www;
location ~* \.(js|css|png|jpg|jpeg|gif|ico)$ {
expires 1d;
}
location/{
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-NginX-Proxy true;
proxy_http_version 1.1;
proxy_pass http://node-app;
proxy_cache_bypass $http_upgrade;
}
}
}
Moja Dockerfile dla moja kompilacja internetowa (zawierająca mój plik nginx.conf i zasoby statyczne):
# Pull nginx base image
FROM nginx:latest
# Expost port 80
EXPOSE 80
# Copy custom configuration file from the current directory
COPY nginx.conf /etc/nginx/nginx.conf
# Copy static assets into var/www
COPY ./dist /var/www
COPY ./node_modules /var/www/node_modules
# Start up nginx server
CMD ["nginx"]
Zawartość folderu ./dist to plik bundle.js i plik index.html. Układ plik jest:
public
-- Dockerfile
-- nginx.conf
-- dist (directory)
-- bundle.js
-- index.html
-- node_modules
...various node modules
To jest właściwie wysyłania żądań do mojego serwera węzła (który jest również w pojemniku Döcker, dlatego moje punkty upstream server do OD boot2docker), ale jestem po prostu coraz błędy 404 dla prób odzyskania moich zasobów statycznych.
Zgubiłem się do następnych kroków. Jeśli mogę podać jakiekolwiek informacje, proszę dać mi znać.
Dzięki za odpowiedź! Przyjęcie konfiguracji, teraz otrzymuję 404 z mojego serwera węzła wraz z masywną odpowiedzią z mojego serwera nginx: 192.168.59.3 - - [04/Aug/2015: 10: 43: 23 +0000] "GET/HTTP/1.1 "404 13" - "" Mozilla/5.0 (Macintosh, Intel Mac OS X 10_10_2) AppleWebKit/537.36 (KHTML, jak Gecko) Chrome/44.0.2304.125 Safari/537.36 " –
Przykład konfiguracji w mojej odpowiedzi jest przykładem działa to tylko wtedy, gdy twoja aplikacja jest zaprojektowana tak, aby jej pliki statyczne były wyświetlane w '/ static /'. Jeśli tak nie jest w przypadku Twojej aplikacji, musisz ją dostosować. W każdym razie powinno to pozwolić ci skupić twoje wysiłki na konfiguracji nginx i przestać przeszukiwać docker;) – Thomasleveil
używając "alias" zamiast "root" naprawiłem to dla mnie –