[Docker] Stellt keine Verbindung zur MySQL Workbench her ... Einstellungen für die DB-Container-Portweiterleitung

Ein Problem, auf das ich beim persönlichen Spielen mit Docker gestoßen bin. Ein Hinweis zur Lösung, wenn Sie den Port ändern möchten, dieser jedoch nicht funktioniert. Bitte lassen Sie mich wissen, ob es einen guten Weg gibt.

Ich möchte die Portweiterleitung eines MySQL-Containers ändern

# docker-compose.yml
version: "3"
services:
  db:
    build:
      context: ./docker/mysql
    container_name: db
    volumes:
      - db-store:/var/lib/mysql
      - db-logs-store:/var/log/mysql
      - ./docker/mysql/my.cnf:/etc/mysql/conf.d/my.cnf
    environment:
      - MYSQL_DATABASE=${DB_NAME:-JETmysql}
      - MYSQL_USER=${DB_USERNAME}
      - MYSQL_PASSWORD=${DB_PASS}
      - MYSQL_ROOT_PASSWORD=${DB_PASS}
      - TZ=${TZ:-Asia/Tokyo}
    ports:
      - ${DB_PORT}:3307 #Zuzugreifender Port: Port im Container
volumes:
  db-logs-store:
  db-store:
  redis-store:

# .env
DB_CONNECTION=mysql
DB_HOST=db #0.0.0.0
DB_PORT=3307

Port Forward ist eine Kommunikationsanforderung, die an einen bestimmten Port gesendet wird. Ich werde es übertragen. Normalerweise wird 3306 für MySQL verwendet, aber 3307 wird verwendet, weil Sie Konflikte vermeiden möchten. Ich dachte, ich würde es anwenden.

Definieren Sie den Port im Port-Teil der obigen YML. Der Teil $ {DB_PORT} wird aus der env-Datei abgerufen. Die linke Seite ist das Portweiterleitungsziel und die rechte Seite ist die im Docker-Container verwendete Portnummer. Es bedeutet "Wenn eine Anfrage an den lokalen Port 3307 kommt, verbinden Sie sie mit 3307 im Container". Da der Container als vom lokalen Terminal isoliertes Netzwerk positioniert ist, Es wird erkannt, dass sich sogar im Container eine Portnummer befindet.

Ich habe mich gefragt, ob ich es nur hier definieren könnte, aber Ich wurde von einem Ereignis getroffen, das ich aus einem anderen Grund als 3306 nicht verbinden konnte. Dieses Mal habe ich versucht, eine GUI namens MySQL Workbench zu verbinden.

Screen Shot 2020-10-31 at 13.55.00.png

docker-compose ps

           Name                           Command               State                Ports
-------------------------------------------------------------------------------------------------------
db                              docker-entrypoint.sh --por ...   Up       3306/tcp, 33060/tcp,
                                                                          0.0.0.0:3307->3307/tcp

Sieht aus wie es definiert ist. ..

Angabe des Ports beim Ausführen von Docker

docker run -p 3307:3307 db

Das funktioniert gut. Wenn ja, funktioniert es, wenn ich den Port mit dem Befehl spezifiziere?

Befehl zu yml hinzufügen


    ports:
      - ${DB_PORT}:3307 #Zuzugreifender Port: Port im Container
    command: --port 3307

Screen Shot 2020-10-31 at 13.56.49.png

Es scheint, dass ich mich erfolgreich verbinden konnte. Ich weiß nicht, warum ich einen Portspezifikationsbefehl benötige. Es scheint damit zu funktionieren.

Recommended Posts

[Docker] Stellt keine Verbindung zur MySQL Workbench her ... Einstellungen für die DB-Container-Portweiterleitung
Stellen Sie eine Verbindung von Java zu PostgreSQL her
[Docker] Stellt keine Verbindung zur MySQL Workbench her ... Einstellungen für die DB-Container-Portweiterleitung
Der MySQL-Container startet nicht in Docker
Docker für Windows: Der MySQL-Container wird bei der Migration von Hyper-v auf WSL2 nicht gestartet
Die Docker-Test-DB wird nicht gestartet
WSL2 + Docker Desktop für Windows startet nicht nur den MySQL-Container
Ich war süchtig danach, vom Docker-Container aus keine Verbindung zu AWS-S3 herstellen zu können
So lösen Sie, wenn Sie mit einem neuen Container keine Verbindung zur Datenbank herstellen können, weil der Port dem vorhandenen Docker-Container zugewiesen ist
[Java] Stellen Sie eine Verbindung zu MySQL her
Was zu überprüfen ist, wenn Schienen db: Migration nicht bestanden
Bei der Bundle-Installation wird mysql2 nicht installiert
Stellen Sie mit Java eine Verbindung zu MySQL 8 her
[Android] Verbindung zu MySQL herstellen (unvollendet)
Stellen Sie über die SSH-Portweiterleitung eine Verbindung vom lokalen zum Remote-Host JMX her