#docker #docker-compose #dockerfile #docker-swarm
#docker #docker-compose #dockerfile #docker-swarm
Вопрос:
docker-compose.yml
services:
{{ app }}{{ env_id }}-{{stage_name}}:
image: "{{ registry_url }}/{{ app }}-{{ stage_name }}:{{ tag }}"
ports:
- {{ port }}:3000
volumes:
- /var/log/{{ app }}/logs:/app/logs
networks:
- net{{ env_id }}
hostname: "{{contain_name}}"
logging:
driver: syslog
options:
tag: "{{ app }}"
stop_grace_period: 20s
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost:3000/version"]
interval: 5s
timeout: 10s
retries: 3
start_period: 5s
deploy:
replicas: 4
update_config:
parallelism: 1
order: start-first
failure_action: rollback
monitor: 15s
rollback_config:
order: start-first
restart_policy:
condition: any
delay: 5s
resources:
limits:
memory: 7G
networks:
net{{ env_id }}:
name: {{ app }}{{ env_id }}_network
используйте docker-compose.yml, я могу получить стек swarm и четыре содержимого, но у содержимого одинаковое имя хоста, я хочу, чтобы они назывались как
«contain_name1
contain_name2
contain_name3
contain_name4»
Как это сделать?
Комментарии:
1. Если вы удалите
hostname:
строки, контейнеры будут считать, что их имена хостов являются их шестнадцатизначными идентификаторами контейнеров. Обычно вам вообще не нужно это устанавливать.2. Я хочу установить имена хостов с одинаковым префиксом
3. Почему? Это влияет только на то, что контейнер считает своим собственным именем хоста, и это почти нигде не видно. Я склонен полностью игнорировать
hostname:
.
Ответ №1:
К сожалению, эта функциональность пока не поддерживается. https://github.com/docker/swarmkit/issues/1242 Kubernetes может решить эту проблему с помощью StatefulSet .https://kubernetes.io/docs/concepts/workloads/controllers/statefulset /