Ich habe zwei Container – „node.js“ und „mysql“, die beide so eingerichtet sind, dass sie sich im selben Netzwerk befinden. Durch Ausführen von docker-compose up -d werden die Container gestartet und sie funktionieren. Ich kann von außen auf „node.js“ bzw. „mysql“ zugreifen.
Aber ich kann von „node.js“ aus keine Verbindung zu „mysql“ herstellen. Mache ich hier etwas falsch?
version: '3' services: app: build: context: . dockerfile: Dockerfile env_file: .env volumes: - .:/app ports: - ${APP_PORT}:${APP_PORT} depends_on: - mysql networks: - appnet mysql: image: mysql:8.0 restart: always env_file: .env environment: - MYSQL_ROOT_HOST=% - MYSQL_ROOT_PASSWORD=${DB_PASSWORD} - MYSQL_DATABASE=${DB_NAME} - MYSQL_USER=${DB_USERNAME} - MYSQL_PASSWORD=${DB_PASSWORD} volumes: - mysql-data:/var/lib/mysql ports: - ${DB_PORT}:${DB_PORT} networks: - appnet networks: appnet: volumes: mysql-data:
Um eine Verbindung zu MySQL herzustellen, habe ich das Paket „knex.js“ verwendet und es funktioniert einwandfrei auf meinem lokalen Computer (gleiche Docker-Konfiguration)
应该在可能构建得很糟糕的环境级别上看到,这里是一个包含 docker-compose 的链接:
https://varsubham.medium.com/nodejs-mysql-docker -compose-ad156cd0c885
希望这对你有帮助