Использование Docker с Rancher v1.6 и использование phpMyAdmin внутри контейнера, с его собственным стеком, создающим сеть с именем db-admin
, и даже когда я добавляю псевдоним для каждого из контейнеров MySQL, я хотел бы иметь возможность для доступа их псевдоним не разрешается на IP-адрес контейнера.
Пример
docker-compose.yml (Gogs):
version: '2'
services:
gogs:
image: gogs/gogs:latest
dns:
- 1.1.1.1
- 1.0.0.1
environment:
RUN_CROND: true
SOCAT_LINK: false # Being used inside of Rancher
labels:
io.rancher.container.pull_image: always
{{- if .Values.HOST_LABEL}}
io.rancher.scheduler.affinity:host_label: ${HOST_LABEL}
{{- end}}
{{- if .Values.TRAEFIK_HOST}}
traefik.enable: true
### Start SSH Segment
traefik.ssh.frontend.entryPoints: ssh
traefik.ssh.frontend.headers.forceSTSHeader: true
traefik.ssh.frontend.headers.SSLRedirect: true
traefik.ssh.frontend.headers.STSPreload: true
traefik.ssh.frontend.headers.STSSeconds: 15552000
traefik.ssh.frontend.rule: Host:${TRAEFIK_HOST}
traefik.ssh.port: "22"
### End SSH Segment
### Start Web Segment
traefik.web.frontend.entryPoints: http,https
traefik.web.frontend.headers.forceSTSHeader: true
traefik.web.frontend.headers.SSLRedirect: true
traefik.web.frontend.headers.STSPreload: true
traefik.web.frontend.headers.STSSeconds: 15552000
traefik.web.frontend.rule: Host:${TRAEFIK_HOST}
traefik.web.port: "3000"
### End Web Segment
{{- else}}
traefik.enable: false
{{- end}}
links:
- mysql
networks:
- public-proxy
ports:
- "${SSH_PORT}:22"
- "${WEB_PORT}:3000"
restart: on-failure
volumes:
- /etc/localtime:/etc/localtime:ro # Syncronize time of container with the host system
- /etc/timezone:/etc/timezone:ro # Syncronize timezone of container with the host system
- /RancherCattle/${DATA_DIR}/Data:/data
mysql:
image: mysql:5
dns:
- 1.1.1.1
- 1.0.0.1
environment:
MYSQL_DATABASE: gogs # Will eventually rename this to "gogs_db"
MYSQL_ROOT_PASSWORD: ${DB_ROOT_PASS}
MYSQL_USER: gogs_user
MYSQL_PASSWORD: ${DB_USER_PASS}
labels:
io.rancher.container.pull_image: always
{{- if .Values.HOST_LABEL}}
io.rancher.scheduler.affinity:host_label: ${HOST_LABEL}
{{- end}}
networks:
db-admin:
aliases:
- gogs
restart: on-failure
volumes:
- /etc/localtime:/etc/localtime:ro # Syncronize time of container with the host system
- /etc/timezone:/etc/timezone:ro # Syncronize timezone of container with the host system
- /RancherCattle/${DATA_DIR}/Database:/var/lib/mysql
networks:
db-admin:
external: true
public-proxy:
external: true
(Кстати, точка входа SSH не работает ... это другой вопрос XD)
docker-compose.yml (phpMyAdmin):
version: '2'
services:
phpmyadmin:
image: phpmyadmin/phpmyadmin:latest
dns:
- 1.1.1.1
- 1.0.0.1
environment:
PMA_ARBITRARY: 1 # Allows the user to specify any arbitrary server using address/hostname and port
labels:
io.rancher.container.pull_image: always
{{- if .Values.HOST_LABEL}}
io.rancher.scheduler.affinity:host_label: ${HOST_LABEL}
{{- end}}
{{- if .Values.TRAEFIK_HOST}}
traefik.enable: true
### Start Web Segment
traefik.web.frontend.entryPoints: http,https
traefik.web.frontend.headers.forceSTSHeader: true
traefik.web.frontend.headers.SSLRedirect: true
traefik.web.frontend.headers.STSPreload: true
traefik.web.frontend.headers.STSSeconds: 15552000
traefik.web.frontend.redirect.entryPoint: https
traefik.web.frontend.redirect.permanent: true
traefik.web.frontend.rule: Host:${TRAEFIK_HOST}
traefik.web.port: "80"
### End Web Segment
{{- else}}
traefik.enable: false
{{- end}}
networks:
- db-admin # Used to be able to make secure, direct connections to other services in other stacks
- public-proxy # Used for the connection to the Traefik container for public access
ports:
- "${WEB_PORT}:80"
restart: on-failure
networks:
db-admin:
public-proxy:
external: true
Я ожидал, что просто смогу использовать «gogs» в поле имени хоста, чтобы phpMyAdmin мог ссылаться на контейнер MySQL Gogs, но phpMyAdmin отображает ошибку, сообщающую, что он не может разрешить имя. Я могу использовать IP-адрес контейнера (как показано в интерфейсе Rancher v1.6), но хотел бы иметь «более простой» способ ссылки на него, если это возможно.
Спасибо!