Я пытаюсь создать службу, которая может перенаправлять порт удаленной базы данных в контейнер и в то же время может быть доступна по псевдониму имени хоста из других контейнеров для работы с ними.
Мне кажется, что все контейнеры взаимодействуют с хостомсеть - плохая практика, поэтому я пытаюсь настроить эту конфигурацию.
Когда я пытаюсь добавить в сервисную сеть php-fpm с driver: host
, докер говорит
only one instance of "host" network is allowed
Когда я пытаюсьустановить службу php-fpm с этим
networks
- host
Докер говорит, что не может найти сеть с этим именем.
Когда я пытаюсь определить сеть в docker-compose по идентификатору встроенного host
, он просто не может запустить этот контейнер.
Это мой docker-compose:
version: '3.2'
networks:
backend-network:
driver: bridge
frontend-network:
driver: bridge
volumes:
redis-data:
home-dir:
services:
&app-service app: &app-service-template
build:
context: ./docker/app
dockerfile: Dockerfile
volumes:
- ./src:/app:rw
- home-dir:/home/user
hostname: *app-service
environment:
FPM_PORT: &php-fpm-port 9001
FPM_USER: "${USER_ID:-1000}"
FPM_GROUP: "${GROUP_ID:-1000}"
APP_ENV: local
HOME: /home/user
command: keep-alive.sh
networks:
- backend-network
&php-fpm-service php-fpm:
<<: *app-service-template
user: 'root:root'
restart: always
hostname: *php-fpm-service
ports: [*php-fpm-port]
environment:
FPM_PORT: *php-fpm-port
FPM_USER: "${USER_ID:-1000}"
FPM_GROUP: "${GROUP_ID:-1000}"
APP_ENV: local
HOME: /home/user
entrypoint: /fpm-entrypoint.sh
command: php-fpm --nodaemonize -R -d "opcache.enable=0" -d "display_startup_errors=On" -d "display_errors=On" -d "error_reporting=E_ALL"
networks:
- backend-network
- frontend-network
nginx:
build:
context: ./docker/nginx
dockerfile: Dockerfile
restart: always
working_dir: /usr/share/nginx/html
environment:
FPM_HOST: *php-fpm-service
FPM_PORT: *php-fpm-port
ROOT_DIR: '/app/public' # App path must equals with php-fpm container path
volumes:
- ./src:/app:ro
ports: ['9999:80']
depends_on:
- *php-fpm-service
networks:
- frontend-network
Сетевая схема (вопрос о зеленой линии):
Хост работает на Debian 7 (обновления запрещены), а conainer работает с последней Alpine