Não é possível acessar o site Wordpress criado como uma Docker Stack [closed]

1

Estou tentando criar um site do Wordpress dentro de uma pilha do Docker composta pelos seguintes serviços:

  • wordpress - o próprio site Wordpress
  • db - o contêiner do MySQL

Eu tenho o seguinte arquivo 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

Eu implanto a pilha com o seguinte comando:

$ pilha do docker deploy -c stack.yml abtehnic

O comando docker ps gera o seguinte:

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

Estou tentando descobrir a porta mapeada por meio de:

$ docker port <container_id for wordpress>

e sua saída está vazia. Além disso, quando estou executando docker logs <container_id_for_wordpress> , obtenho o seguinte:

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'

Aqui estão minhas perguntas:

  1. Por que o contêiner wordpress não pode acessar o contêiner db ?
  2. Por que não há nenhuma porta que eu possa usar para acessar o site do Wordpress do meu host?
por Victor 28.10.2017 / 18:09

2 respostas

1
depends_on:
  - db

Isso apenas garante que o contêiner do banco de dados esteja totalmente carregado antes do contêiner do wordpress. Você precisa dizer ao docker para vincular o contêiner db do contêiner wordpress para referenciá-lo pelo nome.

O que o docker-compose faz sob o capô é que o docker ip dá o contêiner db e adiciona uma entrada /etc/hosts ao contêiner wordpress para que você possa referenciá-lo pelo nome.

Então, adicione isso à seção do wordpress

links:
  - db
    
por 28.10.2017 / 18:48
0

Suponho que você esteja fazendo algo como docker port 26481d8bab95 , de acordo com sua pergunta que definiu a porta 80, então sua resposta é a porta 80:

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

empilhe ou não, você ainda deve poder usar docker port

  1. mysqld demora mais para começar a comparar com httpd (wordpress), por isso você está vendo erros
  2. docker wise, ele está configurado corretamente e o motivo real pelo qual você não pode acessá-lo pode ser muitos, firewall e outros.
por 28.10.2017 / 18:18