У меня есть настройка докера с 2 контейнерами, nginx для сервера и некоторые приложения, в этом приложении на порту 6001 у меня работает сервер socket.io, а также у меня есть виртуальный хост, определенный для nginx.
Как мне получить доступ к приложению через порт 6001 из браузера?
Я попытался выставить порт 6001 в обоих контейнерах, но безуспешно.
Я также попытался определить виртуальный хост для приложения, также безуспешно
Сервер Socket.io:
function handler(request, response) {
response.writeHead(200);
response.end('');
}
try {
let app = require('http').createServer(handler);
app.listen(process.env.SOCKET_PORT, function () {
if (process.env.APP_DEBUG) {
console.log(new Date, 'Server is running on port ' + process.env.SOCKET_PORT);
}
});
try {
let io = require('socket.io').listen(app, {log: false, origins: '*:*'});
io.on('connection', function (socket) {
if (process.env.APP_DEBUG) {
console.log(new Date, 'Connected to Socket', socket.id);
}
});
....
Файл Docker-compose:
services:
app:
container_name: seatbelt_node
command: /bin/sh entrypoint.sh
build:
context: ./
dockerfile: docker/node.docker
volumes:
- ./:/var/www
- /var/www/node_modules
ports:
- "6001"
networks:
- seatbelt
web:
container_name: seatbelt_react
build:
context: ./
dockerfile: docker/web.docker
volumes:
- ./:/var/www
ports:
- "80"
links:
- app
environment:
- "VIRTUAL_HOST=dock.seatbelt.local"
networks:
- nginx-proxy
- seatbelt
Функция, которая подключается к приложению:
let io = require('socket.io-client');
let host = window.location.host.split(':')[0];
let socket = io.connect('//' + host + ':' + process.env.SOCKET_PORT, {
secure: false,
rejectUnauthorized: false
});
socket.on('connect', function () {
console.log(new Date, 'Connected to socket.');
....
То, что я пытаюсь выполнить, каким-то образом из браузера, когда я нахожусь на dock.seatbelt.local (контейнер seatbelt_web) сценарий, чтобы можно было достичь
Контейнер привязного ремня на порту 6001