var names = [{
name: "Joe",
age: 20,
email: "joe@hotmail.com"
},
{
name: "Mike",
age: 50,
email: "mike@hotmail.com"
},
{
name: "Joe",
age: 45,
email: "mike@hotmail.com"
}
];
const res = _.filter(names, (name) => {
return name.name == "Joe" && name.age < 30;
});
console.log(res);
<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.5/lodash.js"></script>
Вы можете использовать jwilder / nginx-proxy , это обратный прокси-сервер, автоматически конфигурируемый env-переменными других контейнеров, поэтому вам не нужно вручную писать конфигурации прокси-серверов nginx. Также по запросу он позволяет использовать определенный порт для пересылки запросов.
# docker-compose.yml
version: '3.3'
services:
lamp:
environment:
VIRTUAL_HOST: some_domain.dev
VIRTUAL_PORT: 9999
image: my_lamp_image
app:
environment:
VIRTUAL_HOST: another_domain.dev
VIRTUAL_PORT: 3000
image: my_app_image
nginx-proxy:
image: jwilder/nginx-proxy
ports:
- 80:80
volumes:
- /var/run/docker.sock:/tmp/docker.sock:ro
# /etc/hosts
127.0.0.1 some_domain.dev
127.0.0.1 another_domain.dev
jwilder/nginx-proxy
имеет много других приятных функций, таких как ssl, uwsgi, fastcgi и может также использоваться в производстве. Есть также «сопутствующие» дополнения, такие как , давайте зашифруем ssl и man в среднем прокси .
Похоже, ваш сервер apache работает через порт 80 внутри контейнера. Если вы хотите использовать dockertest.com
снаружи с вашей записью / etc / hosts, тогда вам также нужно использовать порт 80 для внешней стороны.
/etc/hosts
запись для домена dockertest.com -p 80:80
или если вы используете docker-compose Одна возможность состоит в том, чтобы настроить все приложения в их отдельных контейнерах и затем соединить их через докерскую сеть .
И чтобы охватить все контейнеры, я бы предложил добавить контейнер веб-сервера nginx в сеть в качестве обратного прокси-сервера, который затем можно привязать к порту 80 вашей машины.
Затем вы можете либо определить location
для каждого приложения отдельно, либо определить одно общее местоположение, например,
# sample.conf
server {
listen 80 default_server;
server_name ~ (?<docker_host_name>.+);
location ~ {
# for actual request forwarding
proxy_pass http://$docker_host_name$1$is_args$args;
# some stuff I figured out I have to use in order for service to work properly
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';
proxy_http_version 1.1;
proxy_cache_bypass $http_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-Forwarded-Proto $scheme;
}
}
Эта конфигурация должна быть встроена в исходный /etc/nginx/nginx.conf
или в отдельный файл. это входит в конфигурационный блок http
.
После перезапуска службы или контейнера nginx (в зависимости от настройки контейнера) вы сможете подключиться ко всем службам в сети Docker, и все службы смогут без проблем взаимодействовать друг с другом.
Конечно, вы все равно должны хранить записи в файле hosts, поэтому ваш компьютер знает, что он должен обрабатывать запрос локально.
Исходная конфигурация (вероятно) не делает то, что она должна делать. Итак, я придумал более новую версию, которая должна выполнить работу:
# sample.conf
server {
listen 80 default_server;
location ~ {
# for actual request forwarding
proxy_pass http://$host$1$is_args$args;
# some stuff I figured out I have to use in order for service to work properly
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';
proxy_http_version 1.1;
proxy_cache_bypass $http_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-Forwarded-Proto $scheme;
}
}
С этой конфигурацией сервер nginx будет прослушивать все входящие запросы через порт 80 и перенаправлять их в соответствующий контейнер. внутри сети. Вам также не нужно настраивать разрешение хоста самостоятельно, так как имена контейнеров докеров также представляют хост (-name) контейнера.
Надеюсь, это сработает для вас.