Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

1K
Views
Docker-compose para mysql, phpmyadmin y nginx

Quiero usar un servidor de base de datos SQL dockerizado, un cliente adicional (aquí: phpmyadmin) y un proxy inverso para que la interfaz del cliente sea accesible desde servidores externos.

Hasta ahora he usado este archivo docker-compose:

 version: '3' services: mariatest: image: mysql restart: always networks: - dbnet environment: MYSQL_ROOT_PASSWORD: password MYSQL_DATABASE: test MYSQL_USER: test MYSQL_PASSWORD: test phpmatest: depends_on: - mariatest image: phpmyadmin/phpmyadmin restart: always networks: - dbnet ports: - "9080:80" environment: MYSQL_ROOT_PASSWORD: password PMA_HOST: mariatest reverse: image: nginx networks: - dbnet ports: - "8000:80" volumes: - /var/dockervolumes/nginx:/etc/nginx networks: dbnet:

Tomado del volumen, obtengo el archivo nginx default.conf como

 server { listen 80; server_name localhost; location / { proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $remote_addr; proxy_set_header Host $host; proxy_pass http://localhost:9080/; } #error_page 404 /404.html; # redirect server error pages to the static page /50x.html # error_page 500 502 503 504 /50x.html; location = /50x.html { root /usr/share/nginx/html; } }

Cuando uso la máquina local con http://localhost:9080 , puedo usar el PMA sin ningún problema. Cuando trato de usar la dirección del proxy inverso ( http://localhost:8000 ), solo aparece un error nginx, la página que estoy buscando no está disponible. Dentro de los registros, veo que el proxy inverso falla en connect() con conexión rechazada.

¿Qué me estoy perdiendo para tales configuraciones?

over 4 years ago · Santiago Trujillo
2 answers
Answer question

0

Lo más probable es que localhost esté basado en contenedores. ¿Ha intentado ingresar la dirección IP de su host, por ejemplo:

 proxy_pass http://[HOSTIP]:9080/;

Es posible que deba establecer las direcciones IP estáticas de su contenedor o solicitarlas por su nombre de host. Para usar DNS, configure el nombre de host del contenedor (una forma es configurar container_name), por ejemplo:

 services: phpmatest: container_name: phpmatest

y en el archivo conf de nginx:

 proxy_pass http://phpmatest:80/;

debería funcionar porque están en la misma red de contenedores.

También deberá configurar nginx para recibir DNS desde la ventana acoplable, en caso de que un contenedor necesite reiniciarse o cambiar. Hay tutoriales sobre cómo hacer esto en otros lugares.

over 4 years ago · Santiago Trujillo Report

0

Dos problemas con su código:

Primero :-

/var/dockervolumes/nginx:/etc/nginx Esto no permite que nginx se inicie dentro del contenedor porque la configuración de nginx no se crea automáticamente debido al enlace de volumen.

Intente usar el comando docker ps para verificar.

Usar /var/dockervolumes/nginx:/etc/nginx/conf.d funciona

Supongo que colocará su archivo default.conf dentro de la carpeta conf.d

Nota: si vincula cualquier directorio dentro del contenedor al sistema host, el contenedor no inicializa ese directorio.

Segundo :-

 proxy_pass http://localhost:9080/;

Usted asume que localhost dentro de su contenedor y su host real es el mismo.

Utilice proxy_pass http://phpmatest; eso funcionará porque el nombre de su servicio es phpmatest

Nota: Si crea una red acoplable de cliente, es decir, dbtest en su caso. Se puede acceder directamente a todos los servicios que utilizan la misma red por su nombre, es decir, phpmatest en su caso.

Siguientes obras: -

archivo docker-compose

 version: '3' services: mariatest: image: mysql restart: always networks: - dbnet environment: MYSQL_ROOT_PASSWORD: password MYSQL_DATABASE: test MYSQL_USER: test MYSQL_PASSWORD: test phpmatest: depends_on: - mariatest image: phpmyadmin/phpmyadmin restart: always networks: - dbnet ports: - "9080:80" environment: MYSQL_ROOT_PASSWORD: password PMA_HOST: mariatest reverse: image: nginx networks: - dbnet ports: - "8000:80" volumes: - /var/dockervolumes/nginx:/etc/nginx/conf.d networks: dbnet:

predeterminado.conf

 server { listen 80; server_name localhost; location / { proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $remote_addr; proxy_set_header Host $host; proxy_pass http://phpmatest; } #error_page 404 /404.html; # redirect server error pages to the static page /50x.html # error_page 500 502 503 504 /50x.html; location = /50x.html { root /usr/share/nginx/html; } }
over 4 years ago · Santiago Trujillo Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!