Я получаю странную ошибку при попытке запуска роя Docker с помощью docker-compose. Я пытаюсь использовать следующий (краткий) учебник для преобразования роя docker-compose с использованием HAProxy для использования letsencrypt ssl. Вы можете посмотреть учебник здесь: http://blog.armstrongconsulting.com/?p=392.
Вот мой файл docker-compose:
version: '3.3'
services:
back:
image: patientplatypus/lowtechback:latest
ports:
- '5000:5000'
deploy:
replicas: 3
restart_policy:
condition: on-failure
max_attempts: 5
window: 120s
networks:
- web
front:
image: patientplatypus/lowtechfront:latest
ports:
- '80:3000'
depends_on:
- back
deploy:
replicas: 3
restart_policy:
condition: on-failure
max_attempts: 5
window: 120s
networks:
- web
proxy:
# image: dockercloud/haproxy
image: nmarus/haproxy-certbot
depends_on:
- back
- front
environment:
- BALANCE=leastconn
volumes:
- /var/run/docker.sock:/var/run/docker.sock
ports:
- 8080:8080
expose:
- "8080"
- "3000"
- "5000"
cap_add:
- ALL
- NET_ADMIN
volumes:
- ./data/config:/config
- ./data/letsencrypt:/etc/letsencrypt
- ./data/certs:/usr/local/etc/haproxy/certs.d
networks:
- web
deploy:
placement:
constraints: [node.role == manager]
networks:
web:
driver: overlay
В ./data/config/haproxy.cfg
есть файл с параметрами конфигурации для haproxy, чтобы использовать ssl. Единственное соответствующее изменение, которое я внес в конфигурацию по умолчанию (вы можете видеть это здесь: https://hub.docker.com/r/nmarus/haproxy-certbot), которое я сделал, было это:
backend my_http_backend
mode http
balance leastconn
option tcp-check
option log-health-checks
server back back:5000 check port 5000
server front front:80 check port 80
для маршрутизации в мои собственные контейнеры.
Когда я запускаю следующие команды (как root):
docker swarm init \
--advertise-addr MY_IP_ADD_SS
docker stack deploy --compose-file=docker-compose.yaml prod2
Я получаю следующее:
root@ubuntu-1gb-nyc3-01:/lowteck# docker service ls
ID NAME MODE REPLICAS IMAGE PORTS
ko2xkerpki9f prod2_back replicated 3/3 patientplatypus/lowtechback:latest *:5000->5000/tcp
rly8rrb5uiht prod2_front replicated 3/3 patientplatypus/lowtechfront:latest *:80->3000/tcp
nuf7219sxteu prod2_proxy replicated 0/1 nmarus/haproxy-certbot:latest *:8080->8080/tcp
root@ubuntu-1gb-nyc3-01:/lowteck# docker service logs prod2_proxy
prod2_proxy.1.y2eagrgn52fg@ubuntu-1gb-nyc3-01 | getsockopt failed strangely: Operation not permitted
prod2_proxy.1.ycbj0rojv2tl@ubuntu-1gb-nyc3-01 | getsockopt failed strangely: Operation not permitted
prod2_proxy.1.y4mt1es20q0v@ubuntu-1gb-nyc3-01 | getsockopt failed strangely: Operation not permitted
prod2_proxy.1.ohopcbdmgvwt@ubuntu-1gb-nyc3-01 | getsockopt failed strangely: Operation not permitted
Насколько я могу сказать, я установил параметр cap_add
, чтобы разрешить эту операцию в прокси-контейнере, я выполнил команду swarm от имени пользователя root, и у меня должны быть права на чтение / запись / выполнение для моего haproxy.cfg
файл. Почему я получаю эту странную ошибку?