Невозможно получить доступ к сайту Wordpress, созданному как стек Docker [закрыто]

Я пытаюсь создать сайт Wordpress внутри стека Docker, состоящего из следующих служб:

  • wordpress - сам сайт Wordpress
  • db - контейнер MySQL

У меня есть следующий файл stack.yml :

version: '3.1'
networks:
  abtehnic:
services:
  db:
    image: mysql:latest
    restart: always
    networks:
      - abtehnic
    environment:
      MYSQL_ROOT_PASSWORD: XXXXX
      MYSQL_DATABASE: wordpress
      MYSQL_USER: wordpress
      MYSQL_PASSWORD: barbu123
  wordpress:
    image: abtehnic-wordpress
    depends_on:
      - db
    restart: always
    ports:
      - 80
    environment:
      WORDPRESS_DB_HOST: db:3306
      WORDPRESS_DB_USER: wordpress
      WORDPRESS_DB_PASSWORD: wordpress
      WORDPRESS_DB_PASSWORD: barbu123
    networks:
      - abtehnic
    volumes:
      - ./source:/var/www/html

Я развертываю стек с помощью следующей команды:

$ docker stack deploy -c stack. yml abtehnic

Команда docker ps выводит следующее:

CONTAINER ID        IMAGE               COMMAND                  CREATED              STATUS              PORTS               NAMES
256e65fe2c4c        mysql:latest        "docker-entrypoint..."   About a minute ago   Up About a minute   3306/tcp            abtehnic_db.1.mo0xp17adt2jocu9yivkzg19g
26481d8bab95        wordpress:4.8       "docker-entrypoint..."   About a minute ago   Up About a minute   80/tcp              abtehnic_wordpress.1.tiikrjwm1kcmxjg7v74vrcquw

Я пытаюсь узнать сопоставленный порт через:

$ docker port <container_id for wordpress>

, но его вывод пуст. Также, когда я запускаю журналы докеров , я получаю следующее:

Warning: mysqli::mysqli(): php_network_getaddresses: getaddrinfo failed: Name or service not known in - on line 22

Warning: mysqli::mysqli(): (HY000/2002): php_network_getaddresses: getaddrinfo failed: Name or service not known in - on line 22

MySQL Connection Error: (2002) php_network_getaddresses: getaddrinfo failed: Name or service not known

Warning: mysqli::mysqli(): (HY000/2002): Connection refused in - on line 22

MySQL Connection Error: (2002) Connection refused

Warning: mysqli::mysqli(): (HY000/2002): Connection refused in - on line 22

MySQL Connection Error: (2002) Connection refused

MySQL Connection Error: (2002) Connection refused

Warning: mysqli::mysqli(): (HY000/2002): Connection refused in - on line 22
AH00558: apache2: Could not reliably determine the server's fully qualified domain name, using 10.0.1.3. Set the 'ServerName' directive globally to suppress this message
AH00558: apache2: Could not reliably determine the server's fully qualified domain name, using 10.0.1.3. Set the 'ServerName' directive globally to suppress this message
[Sat Oct 28 16:05:32.189285 2017] [mpm_prefork:notice] [pid 1] AH00163: Apache/2.4.10 (Debian) PHP/5.6.31 configured -- resuming normal operations
[Sat Oct 28 16:05:32.189321 2017] [core:notice] [pid 1] AH00094: Command line: 'apache2 -D FOREGROUND'

Вот мои вопросы:

  1. Почему контейнер wordpress не может получить доступ к db контейнер?
  2. Почему нет порта, который я мог бы использовать для доступа к сайту Wordpress с моего хоста?
4
задан 28 October 2017 в 19:25
2 ответа
depends_on:
  - db

Это просто гарантирует, что контейнер базы данных будет полностью загружен до контейнера wordpress. Вам нужно указать докеру, чтобы он связал контейнер db из контейнера wordpress , чтобы ссылаться на него по имени.

Что docker-compose делает под капотом, так это взять, что ip docker дает контейнер db и добавьте запись / etc / hosts в контейнер wordpress , чтобы вы могли ссылаться на него по имени.

Так что попробуйте добавить это в wordpress section

links:
  - db
2
ответ дан 3 December 2019 в 03:54

Я предполагаю, что вы делаете что-то вроде docker port 26481d8bab95 , согласно вашему вопросу вы определили порт 80, поэтому ваш ответ - порт 80: стек

# docker run -d -p 80:80 wordpress
dc9e4aab1015eb5d82cf489e2943d76084faceaf3093bc3238964d6cfa81ab1c
# docker port dc9e4aab1015eb5d82cf489e2943d76084faceaf3093bc3238964d6cfa81ab1c
80/tcp -> 0.0.0.0:80
# 

или нет, вы все равно должны возможность использовать порт докера

  1. mysqld требует больше времени для начала по сравнению с httpd (wordpress), поэтому вы видите ошибки
  2. докера, он настроен правильно и Фактическая причина, по которой вы не можете получить к нему доступ, может быть много, брандмауэр и тому подобное.
0
ответ дан 3 December 2019 в 03:54

Теги

Похожие вопросы