[Docker] Ne se connecte pas à MySQL workbench ... Paramètres de transfert de port du conteneur de base de données

Un problème que j'ai rencontré en jouant personnellement avec Docker. Une note sur la solution lorsque vous souhaitez changer de port mais que cela ne fonctionne pas. S'il vous plaît laissez-moi savoir s'il existe un bon moyen.

Je souhaite modifier la redirection de port d'un conteneur MySQL

# 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 #Port d'accès: Port dans le conteneur
volumes:
  db-logs-store:
  db-store:
  redis-store:

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

La redirection de port est une demande de communication adressée à un port spécifique. Je vais le transférer. Normalement, 3306 est utilisé pour MySQL, mais 3307 est utilisé parce que vous voulez éviter les conflits. J'ai pensé que je l'appliquerais.

Définissez le port dans la partie ports du YML ci-dessus. La partie $ {DB_PORT} est extraite du fichier env. Le côté gauche est la destination de transfert de port, et le côté droit est le numéro de port utilisé à l'intérieur du conteneur Docker. Cela signifie "lorsqu'une requête arrive sur le port local 3307, connectez-la au 3307 dans le conteneur". Parce que le conteneur est positionné comme un réseau isolé du terminal local, Il est reconnu qu'il existe un numéro de port même à l'intérieur du conteneur.

Je me demandais si je pourrais le définir uniquement ici, mais J'ai été frappé par un événement auquel je n'ai pas pu me connecter pour une raison autre que 3306. Cette fois, j'essayais de connecter une interface graphique appelée MySQL Workbench.

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

On dirait qu'il est défini. ..

Spécification du port lors de l'exécution de docker

docker run -p 3307:3307 db

Cela fonctionne très bien. Si tel est le cas, cela fonctionne-t-il si je spécifie le port avec la commande?

Ajouter une commande à yml


    ports:
      - ${DB_PORT}:3307 #Port d'accès: Port dans le conteneur
    command: --port 3307

Screen Shot 2020-10-31 at 13.56.49.png

Il semble que j'ai pu me connecter avec succès. Je ne sais pas pourquoi j'ai besoin d'une commande de spécification de port, Cela semble fonctionner avec cela.

Recommended Posts

[Docker] Ne se connecte pas à MySQL workbench ... Paramètres de transfert de port du conteneur de base de données
Connectez-vous de Java à PostgreSQL
[Docker] Ne se connecte pas à MySQL workbench ... Paramètres de transfert de port du conteneur de base de données
Le conteneur MySQL ne démarre pas dans Docker
Docker pour Windows: le conteneur MySQL ne démarre pas lors de la migration d'Hyper-v vers WSL2
La base de données de test Docker ne démarre pas
WSL2 + Docker Desktop pour Windows ne lance pas uniquement le conteneur MySQL
J'étais accro à ne pas pouvoir me connecter à AWS-S3 à partir du conteneur Docker
Solution lorsque la connexion à la base de données n'est pas possible avec un nouveau conteneur car le port est affecté au conteneur docker existant
[Java] Connectez-vous à MySQL
Que vérifier lorsque rails db: la migration ne réussit pas
l'installation du bundle n'installe pas mysql2
Connectez-vous à MySQL 8 avec Java
[Android] Connectez-vous à MySQL (non terminé)
Connectez-vous de l'hôte local à l'hôte distant JMX via la redirection de port SSH