[英]Why is docker compose creating mysql container with wrong name?
我已經設法創建了一個 MySQL 和 PHP 容器,並且我的腳本執行並且我的所有表都在那里。
但是,我有一個名為“myDb”的數據庫和一個名為“someuser”的用戶,當由於某種原因創建數據庫時,數據庫的名稱為“somedatabase”
我的 docker-compose.yaml 文件:
services:
mysql:
image: mysql:latest
ports:
- 3307:3306
environment:
MYSQL_DATABASE: myDb
MYSQL_ROOT_PASSWORD: SomeRootPassword1!
MYSQL_USER: someuser
MYSQL_PASSWORD: Password1!
volumes:
- ./dbScript/winit_Script2.sql:/docker-entrypoint-initdb.d/winit_Script2.sql
- db_data:/var/lib/mysql
phpmyadmin:
image: phpmyadmin/phpmyadmin
container_name: dev_pma
links:
- mysql
environment:
PMA_HOST: mysql
PMA_PORT: 3307
PMA_ARBITRARY: 1
restart: always
ports:
- 8183:80
volumes:
db_data:
php管理員:
mysql工作台:
我在這里做錯了什么?
評論后稍作修改:
看起來,當有一個卷部分時,你在 docker 中創建卷,當你在特定端口上創建一個卷時,每次你執行 docker-compose up 時它都會被重用。 這就是我的情況。
已接受答案中的更多詳細信息。
如果卷不干凈,mysql 映像不會初始化數據庫。
當您從同一個撰寫文件停止和啟動數據庫時,卷始終相同,因此您希望即使在應用程序重新啟動后數據也能保留。
要強制重新初始化數據,您可以刪除該 docker 卷(僅當您不再需要該數據庫時!這是無法撤消的):
首先,停止並刪除容器。
然后列出並刪除持久化數據庫的卷:
docker volume ls
DRIVER VOLUME NAME
local <your-deployment-name>_db_data
docker volume rm <your-deployment-name>_db_data
然后再次運行myDb
docker-compose up
命令,您將能夠在 phpMyAdmin 中找到myDb
而不是somedb
編輯:
除非您更改自己的entrypoint
並重建映像以強制它根據您傳遞的 ENV 初始化您的數據庫,即使卷不干凈,我想到的唯一選擇是手動創建新數據庫。 這里是跳過DB的重新初始化和條件在這里是音量是否干凈時調用腳本。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.