Der Docker-Container wird nicht in einem Netzwerk ausgeführtMySql

MySQL DBMS-Forum
Guest
 Der Docker-Container wird nicht in einem Netzwerk ausgeführt

Post by Guest »

Ich versuche, etwas über Docker und die Containerisierung von Anwendungen zu lernen. Ich habe eine Job_portal-Anwendung (einen Dienst) in Golang, die von MySQL abhängt, und einen E-Mail-Dienst, ebenfalls in Golang, den ich erstellt habe (ein weiterer Mikrodienst). Wenn ich jetzt meine Containerumgebung betreibe, laufen MySQL-Container und E-Mail einwandfrei, mit Ausnahme von job_portal. Der Fehler scheint irgendwo in der IP-Adressierung und Auflösung von DSN zu liegen.
Unten finden Sie den Inhalt meiner docker-compose.yml-Dateien:

Code: Select all

version: "3.9"

services:
mysql_service:
image: mysql:8.0
ports:
- "3307:3306"
environment:
MYSQL_ROOT_PASSWORD: ${DB_PASSWORD}
MYSQL_DATABASE: ${DB_NAME}
volumes:
- mysql_data:/var/lib/mysql
env_file:
- .env
networks:
- app_network

email_service:
build:
context: ../email-service
dockerfile: Dockerfile
ports:
- "50051:50051"
networks:
- app_network

job_portal:
build:
context: ../gorm_recruiter
dockerfile: Dockerfile
ports:
- "8080:8080"
depends_on:
- mysql_service
- email_service
networks:
- app_network
environment:
DB_HOST: mysql_service
DB_PORT: 3306
DB_USER: ${DB_USER}
DB_PASSWORD: ${DB_PASSWORD}
DB_NAME: ${DB_NAME}

networks:
app_network:

volumes:
mysql_data:

Das ist meine .env-Datei:

Code: Select all

DB_USER=root
DB_PASSWORD=example
DB_NAME=crud_db
DB_HOST=mysql_service
DB_PORT=3306

Dies ist meine main.go-Datei:

Code: Select all

func main() {
fmt.Println("Started main function")
err := godotenv.Load()
if err != nil {
log.Fatalf("Error loading .env file")
}
dbUser := os.Getenv("DB_USER")
dbPassword := os.Getenv("DB_PASSWORD")
dbName := os.Getenv("DB_NAME")
dbHost := os.Getenv("DB_HOST")
dbPort := os.Getenv("DB_PORT")
//! This is where it says the error is :-> resolution of dsn
dsn := fmt.Sprintf("%s:%s@tcp(%s:%s)/%s?charset=utf8mb4&parseTime=True&loc=Local", dbUser, dbPassword, dbHost, dbPort, dbName)
fmt.Println(dsn)
driver, err := gorm.Open(mysql.Open(dsn), &gorm.Config{
// Logger: logger.Default.LogMode(logger.Info),
})
if err != nil {
log.Fatalf("failed to connect to the database: %v", err)
return
}
...rest of the code
}
Wenn ich den Befehl ausführe: docker-compose -f docker-compose.yml up
Es soll die drei Container ausführen, die ich erwähnt habe. Der MySQL- und E-Mail-Dienst ist betriebsbereit, job_portal jedoch nicht:

Code: Select all

...logs
[+] Running 4/3
✔ Network gorm_recruiter_app_network        Created                                                                                  0.0s
✔ Container gorm_recruiter-email_service-1  Created                                                                                  0.1s
✔ Container gorm_recruiter-mysql_service-1  Created                                                                                  0.1s
✔ Container gorm_recruiter-job_portal-1     Created                                                                                  0.0s
Attaching to gorm_recruiter-email_service-1, gorm_recruiter-job_portal-1, gorm_recruiter-mysql_service-1
gorm_recruiter-mysql_service-1  | 2025-01-17 05:38:20+00:00 [Note] [Entrypoint]: Entrypoint script for MySQL Server 8.0.40-1.el9 started.
gorm_recruiter-email_service-1  | 2025/01/17 05:38:20 Email service is running on port 50051...
gorm_recruiter-job_portal-1     | Started main function
gorm_recruiter-job_portal-1     | root:example@tcp(mysql_service:3306)/crud_db?charset=utf8mb4&parseTime=True&loc=Local
gorm_recruiter-job_portal-1     |
gorm_recruiter-job_portal-1     | 2025/01/17 05:38:21 /app/main.go:31
gorm_recruiter-job_portal-1     | [error] failed to initialize database, got error dial tcp 172.29.0.3:3306: connect: connection refused
gorm_recruiter-job_portal-1     | 2025/01/17 05:38:21 failed to connect to the database: dial tcp 172.29.0.3:3306: connect: connection refused
gorm_recruiter-mysql_service-1  | 2025-01-17 05:38:21+00:00 [Note] [Entrypoint]: Switching to dedicated user 'mysql'
gorm_recruiter-job_portal-1 exited with code 1
gorm_recruiter-mysql_service-1  | 2025-01-17 05:38:21+00:00 [Note] [Entrypoint]: Entrypoint script for MySQL Server 8.0.40-1.el9 started.
..logs
Das ist meine Docker-Datei:

Code: Select all

FROM golang:1.22
WORKDIR /app
COPY . .
RUN go mod download
RUN go build -o job_portal main.go
EXPOSE 8080
CMD ["./job_portal"]

Meine Netzwerkprotokolle:

Code: Select all

docker network inspect gorm_recruiter_app_network
[
{
"Name": "gorm_recruiter_app_network",
"Id": "0175ee7a7dfa24e8e057d8622a3c1fefc28f90e579ba1df984bbe19b38e8c661",
"Created": "2025-01-17T05:38:20.398763586Z",
"Scope": "local",
"Driver": "bridge",
"EnableIPv6": false,
"IPAM": {
"Driver": "default",
"Options": null,
"Config": [
{
"Subnet": "172.29.0.0/16",
"Gateway": "172.29.0.1"
}
]
},
"Internal": false,
"Attachable": false,
"Ingress": false,
"ConfigFrom": {
"Network": ""
},
"ConfigOnly": false,
"Containers": {
"4baeab4020b1496aae2e1243f1fc17293bc9fa929b6ce98f0d0ace3bf98180dd": {
"Name": "gorm_recruiter-email_service-1",
"EndpointID": "6a055273f688cdf3d2d9df06ba8c601146f687c067894e017c324ba0e926345e",
"MacAddress": "02:42:ac:1d:00:02",
"IPv4Address": "172.29.0.2/16",
"IPv6Address": ""
},
"9d4cb8d18fcb8f504bb24dcd2812268bf482f955246b844537d8c1c35796c58d": {
"Name": "gorm_recruiter-mysql_service-1",
"EndpointID": "ac10d2d48d81c27c925033256e0a2cb549178dbbbbbaf31f96f92a70b85328b6",
"MacAddress": "02:42:ac:1d:00:03",
"IPv4Address": "172.29.0.3/16",
"IPv6Address": ""
}
},
"Options": {},
"Labels": {
"com.docker.compose.network": "app_network",
"com.docker.compose.project": "gorm_recruiter",
"com.docker.compose.version": "2.18.1"
}
}
]
Wo liegt Ihrer Meinung nach der Fehler und wie kann ich ihn beheben?

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post