我正在开发基于 Debian 的 Virtual Box
我有 docker-compose yaml 文件:
version: '3'
services:
mydb:
build: ./db/
networks:
- dockercompose-frontend
volumes:
- server_db:/var/lib/mysql
environment:
- MYSQL_ROOT_PASSWORD=debian
healthcheck:
test: ['CMD", "mariadb-admin", "ping", "-h", "localhost"]
interval: 10s
timeout: 15s
retries: 5
frontend:
build: .
ports:
- "8080:80"
networks:
- dockercompose-frontend
environment:
PMA_HOST=mydb
PMA_PORT=3306
volumes:
server_db:
driver: local
networks:
dockercompose-frontend:
每个服务都有两个 Dockerfile,我只在其中安装必要的映像。
FROM mariabd:latest
RUN apt-get update && apt-get install -y iputils-ping
和
FROM phpmyadmin:5.2.0-apache
RUN apt-get update && apt-get install -y iputils-ping
当我使用
docker compose up
(无-d模式)时:
frontend-1 | AH00558: apache2: Could not reliably determine the server's fully qualified domain nam e, using 172.25.0.2. Set the ServerName directive globally to suppress this message
当我使用
docker compose up -d
并检查 mydb 的健康状态时,它会抛出:
{
"Status":"starting",
"FailingStreak": 2,
"Log": [{"Start": "2024-02-19T10:05:48.178379963-05:00",
"End": 2024-02-19T10:05:48.240662846-05:00",
"ExitCode": 1,
"Output":"\u0007mariadb-admin: connect to server a t 'localhost failed\nerror: 'Can't connect to local server through socket '/run/mysqld/mysqld.sock (2)
'Check that mariadbd is running and that the socket: '/run/mysqld/mysqld.sock' exists!"
}
还有,
docker exec dockercompose-mydb-1 service mariadb status
抛出“Mariadb 服务已停止”
之后
docker exec dockercompose-mydb-1 service mariadb start
它抛出退出代码 1(失败)。
healthcheck:
test: ["CMD", "mariadb-admin", "ping", "-h", "localhost"]
interval: 10s
timeout: 15s
retries: 5
version: '3'
services:
mydb:
build: ./db/
networks:
- dockercompose-frontend
volumes:
- server_db:/var/lib/mysql
environment:
- MYSQL_ROOT_PASSWORD=debian
healthcheck:
test: ["CMD", "mariadb-admin", "ping", "-h", "localhost"]
interval: 10s
timeout: 15s
retries: 5
ports:
- "3306:3306" # Map container's port 3306 to host's port 3306
frontend:
build: .
ports:
- "8080:80"
networks:
- dockercompose-frontend
environment:
PMA_HOST: mydb
PMA_PORT: 3306
volumes:
server_db:
driver: local
#rest of your docker comopse file
frontend:
build: .
ports:
- "8080:80"
networks:
- dockercompose-frontend
environment:
PMA_HOST: mydb
PMA_PORT: 3306
depends_on:
- mydb # to prevent docker compose from starting the container until the container of mariaDB is running.