Multi Docker -Сервис обмена проектами - PullRequest
0 голосов
/ 20 июня 2020

Я пытаюсь создать несколько проектов Docker -Compose и заставить их использовать одну службу - сервер базы данных. В настоящее время я не могу получить проекты для использования моего экземпляра mariadb. Я не уверен, что у меня проблемы в traefik или docker. Я могу заставить wordpress распознавать базу данных, если она включена в тот же docker -compose, но, поскольку я бы в конечном итоге не хотел, чтобы несколько экземпляров сервера базы данных работали, я бы предпочел, чтобы это был его собственный проект.

# ~/docker/traefik/docker-compose.yml
version: "3.3"

services:

  traefik:
    image: "traefik:v2.2"
    container_name: "traefik"
    command:
      - "--api=true"
      - "--providers.docker=true"
      - "--providers.docker.exposedbydefault=false"
      - "--entrypoints.web.address=:80"
      - "--entrypoints.websecure.address=:443"
      - "--certificatesresolvers.myresolver.acme.dnschallenge=true"
      - "--certificatesresolvers.myresolver.acme.dnschallenge.provider=namedotcom"
      - "--certificatesresolvers.myresolver.acme.caserver=https://acme-staging-v02.api.letsencrypt.org/directory"
      - "--certificatesresolvers.myresolver.acme.email=<MY-EMAIL>"
      - "--certificatesresolvers.myresolver.acme.storage=/letsencrypt/acme.json"
    networks:
      t2_proxy:
    ports:
      - "80:80"
      - "443:443"
    environment:
      - "NAMECOM_USERNAME=<My-USERNAME>
      - "NAMECOM_API_TOKEN=<My-Token>
    labels:
      # Dashboard
      - "traefik.enable=true"
      - "traefik.http.routers.traefik.rule=Host(`api.mydomain.com`)"
      - "traefik.http.routers.traefik.service=api@internal"
      - "traefik.http.routers.traefik.middlewares=admin"
      - "traefik.http.routers.traefik.tls.certresolver=myresolver"
      - "traefik.http.routers.traefik.entrypoints=websecure"
      - "traefik.http.middlewares.admin.basicauth.users=myuser:mypasswordhash/"
        # middleware redirect
      - "traefik.http.middlewares.redirect-to-https.redirectscheme.scheme=https"
      # global redirect to https
      - "traefik.http.routers.redirs.rule=hostregexp(`{host:.+}`)"
      - "traefik.http.routers.redirs.entrypoints=web"
      - "traefik.http.routers.redirs.middlewares=redirect-to-https"
    volumes:
      - "./letsencrypt:/letsencrypt"
      - "/var/run/docker.sock:/var/run/docker.sock:ro"

networks:
  t2_proxy:
# ~/docker/db/docker-compose.yml
version: '3.3'

services:

  mysql:
    image: mariadb
    container_name: "mariadb"
    restart: always
    environment:
      MYSQL_ROOT_PASSWORD: example
      MYSQL_DATABASE: wordpressDB
      MYSQL_USER: wordpressUSER
      MYSQL_PASSWORD: wordpressPW
    networks:
      default:
    ports:
      - 3306:3306
  adminer:
    image: adminer
    restart: always
    container_name: "adminer"
    labels:
      - "traefik.enable=true"
      - "traefik.http.routers.adminer.rule=PathPrefix(`/adminer`)"
      - "traefik.http.routers.adminer.entrypoints=websecure"
      - "traefik.http.routers.adminer.tls.certresolver=myresolver"
    networks:
      - default
      - traefik_t2_proxy
networks:
  default:
  traefik_t2_proxy:
    external: true
# ~/docker/wordpress/docker-compose.yml
version: '3.3'

services:
   wordpress:
     image: wordpress:latest
     restart: always
     container_name: "mySite"
     environment:
       WORDPRESS_DB_HOST: db:3306
       WORDPRESS_DB_USER: wordpressUSER
       WORDPRESS_DB_PASSWORD: wordpressPW
       WORDPRESS_DB_NAME: wordpressDB
     networks:
       traefik_t2_proxy:
       db_default:
     labels:
       - "traefik.enable=true"
       - "traefik.http.routers.wp2.rule=PathPrefix(`/wordpress`)"
       - "traefik.http.routers.wp2.entrypoints=websecure"
       - "traefik.http.routers.wp2.tls.certresolver=myresolver"
volumes:
  db_data: {}
networks:
  traefik_t2_proxy:
    external: true
  db_default:
    external: true

1 Ответ

2 голосов
/ 21 июня 2020

У вас может быть несколько файлов docker -compose с одной и той же сетью и запускать их вместе, как показано ниже: docker-compose -f docker-compose-1.yml -f docker-compose-2.yml up -d Но если вам нужны службы для распознавания друг друга, сети должны быть одинаковыми. Также укажите свою сеть traefik_t2_proxy на mysql.

...