Локальная среда Docker, настраиваемые локальные домены (файл hosts?) - PullRequest
1 голос
/ 08 июня 2019

Я немного новичок в докере, но ищу его уже довольно долго.

Я почти всегда использую docker с этим контейнером: https://hub.docker.com/_/wordpress/, потому что большая часть моего проекта основана на WordPress.

Дело в том, что каждый раз, когда я запускаю этот контейнер, я запускаю его в локальном домене. Сейчас в компании, в которой я работаю, мы все еще используем виртуальную машину. Здесь у меня есть файл 'homestead.yml', где я могу добавить собственный домен и его путь. Мне также нужно добавить это в мой файл hosts и запустить бродячее обеспечение.

Я не хочу использовать виртуальную машину на этом Mac, потому что мне нравится скорость использования Docker, но я хочу использовать собственные домены. Например; Я работаю над проектом, называемым «солнечные очки», я хочу создать локальный домен, который называется «солнечные очки» для моей локальной среды. Но я не могу заставить его работать ...

Мой файл docker-compose выглядит так:

version: '3.1'
services:
  wordpress:
    depends_on:
      - db
    image: wordpress:latest
    restart: unless-stopped
    working_dir: /var/www/html
    volumes:
      - ./wp-content:/var/www/html/wp-content
    # - /Users/username/dev/wordpress-foundation-boilerplate/wp-content:/var/www/html/wp-content
    # - /Users/username/dev/docker-wp-demo/uploads.ini:/usr/local/etc/php/conf.d/uploads.ini
    environment:
      WORDPRESS_DB_NAME: database
      WORDPRESS_DB_HOST: db:3306
      WORDPRESS_DB_PASSWORD: p4ssw0rd!
      WORDPRESS_TABLE_PREFIX: wp_
      WORDPRESS_DEBUG: 1
      WORDPRESS_CONFIG_EXTRA: | # Add config to wp-config.php
        define('FS_METHOD', 'direct');
        define('WP_DEBUG_LOG', true);
        define( 'WP_DEBUG', true );
    ports:
      - 8000:80
      - 443:443
    networks:
      - back
  db:
    image: mysql:5.7
    restart: unless-stopped
    volumes:
       - db_data:/var/lib/mysql
    environment:
      MYSQL_ROOT_PASSWORD: p4ssw0rd!
    networks:
      - back
  phpmyadmin:
    depends_on:
      - db
    image: phpmyadmin/phpmyadmin
    restart: always
    ports:
      - 8080:80
    environment:
      PMA_HOST: db
      MYSQL_ROOT_PASSWORD: p4ssw0rd!
    networks:
      - back
networks:
  back:
volumes:
  db_data:

Я использую Gasmask (см .: http://clockwise.ee/) для редактирования моего файла hosts и уже добавил домен, который я хочу использовать с нужными IP-адресами.

Есть идеи, что мне не хватает? Теперь я не должен был размещать адрес домена в моем файле docker-compose. Я попытался добавить его в «порты», но он даже не запустил мой файл docker-compose. Надеюсь, кто-то знает, что я делаю не так.

1 Ответ

2 голосов
/ 08 июня 2019

На работе мы используем dnsmasq для передачи запросов к TLD, которые заканчиваются на .docker, на localhost. Вот как:

Требования: Доморощенный и административный доступ

Чтобы переслать .docker TLD, установите и настройте Dnsmasq.

$ brew up && brew install dnsmasq
$ sudo mkdir -p /etc/resolver
$ echo 'nameserver 127.0.0.1' | sudo tee -a /etc/resolver/docker > /dev/null
$ echo 'address=/docker/127.0.0.1' | tee -a /usr/local/etc/dnsmasq.d/docker-tld.conf > /dev/null
$ sudo brew services start dnsmasq

Примечание: распознаватель начнет работать после перезагрузки

Изменить /usr/local/etc/dnsmasq.conf

    ...

listen-address=127.0.0.1

    ...

conf-dir=/usr/local/etc/dnsmasq.d/,*.conf

Проверка DNS-сервера

$ dig test.docker @127.0.0.1

; <<>> DiG 9.9.7-P3 <<>> test.docker @127.0.0.1
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 40401
;; flags: qr aa rd ra ad; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 0

;; QUESTION SECTION:
;test.docker.           IN  A

;; ANSWER SECTION:
test.docker.        0   IN  A   127.0.0.1

;; Query time: 0 msec
;; SERVER: 127.0.0.1#53(127.0.0.1)
;; WHEN: Thu Feb 08 16:24:12 CET 2018
;; MSG SIZE  rcvd: 45

Проверка конфигурации

; Make sure your DNS is still working.
$ ping -c 1 www.google.com

PING www.google.com (216.58.206.4): 56 data bytes
64 bytes from 216.58.206.4: icmp_seq=0 ttl=53 time=26.789 ms

--- www.google.com ping statistics ---
1 packets transmitted, 1 packets received, 0.0% packet loss
round-trip min/avg/max/stddev = 26.789/26.789/26.789/0.000 ms

Проверьте, что .docker TLD работают

$ ping -c 1 test.docker
  PING test.docker (127.0.0.1): 56 data bytes

Источник: Проходящее любопытство

...