Проблема в том, что API и интерфейс не связаны. Я могу использовать команду --link
, когда я запускаю контейнер nginx. Но мне нужно изменить мой nginx.conf.Как создать мой nginx.conf
На данный момент у меня
worker_processes 4;
events { worker_connections 1024; }
http {
upstream node-app {
least_conn;
server nodejs:8888 weight=10 max_fails=3 fail_timeout=30s;
}
server {
listen 80;
location/{
proxy_pass http://node-app;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';
proxy_set_header Host $host;
proxy_cache_bypass $http_upgrade;
}
}
}
Мой nodejs контейнер имеет --name
nodejs и его работает на порту 8888 (-p 8888:8888
) Это dockerfile выглядит следующим образом:
FROM node
# Create app directory
RUN mkdir -p /usr/src/www
WORKDIR /usr/src/www
# copy
COPY node_modules /usr/src/www/node_modules
COPY gulpfile.js /usr/src/www/gulpfile.js
COPY gulp.config.js /usr/src/www/gulp.config.js
COPY server.js /usr/src/www/server.js
EXPOSE 8080
CMD [ "node", "server.js" ]
я начинаю его :
docker run -d -p 8888:8888 --name nodejs localhost:5000/test/nodejs-image:1
я могу посетить мой апи на локальном хосте: 8888/апите
Это dockerfile из Nginx (расстояние создается после НОЙ установки и т.д. для углового)
FROM nginx
COPY dist /usr/share/nginx/html/dist
Когда я просто выполнить:
docker run -d -p 80:80 --name nginx localhost:5000/test/nginx-image:1
Я могу посетить мои статические файлы на локальном хосте: 80/DIST/...
Но я должен связать два контейнера + изменить nginx.conf:
docker run -d -p 80:80 --name nginx --link nodejs:nodejs -v $(pwd)/nginx.conf:/etc/nginx/nginx.conf localhost:5000/test/nginx-image:1
Мой server.js содержит такие вещи, как:
app.post('/api/login', requestProxy({
url: xxx + "/login"
}));
Может кто-то исправить мою nginx.conf или есть другая неисправность?
Вы открываете 8080 и работаете с 8888, это ваша проблема? Вы пытались выполнить 'docker exec' в свой nginx и видеть в/etc/hosts, если nodejs заселен (попробуйте ping nodejs)? –