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.
# 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.
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. ..
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?
ports:
- ${DB_PORT}:3307 #Port d'accès: Port dans le conteneur
command: --port 3307
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