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.
# 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.
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. ..
docker run -p 3307:3307 db
Das funktioniert gut. Wenn ja, funktioniert es, wenn ich den Port mit dem Befehl spezifiziere?
ports:
- ${DB_PORT}:3307 #Zuzugreifender Port: Port im Container
command: --port 3307
Es scheint, dass ich mich erfolgreich verbinden konnte. Ich weiß nicht, warum ich einen Portspezifikationsbefehl benötige. Es scheint damit zu funktionieren.
Recommended Posts