【发布时间】:2022-01-09 23:50:20
【问题描述】:
我需要在每次启动时执行这些命令,因为每次设置并重新启动它时它看起来都会被覆盖
mysql -uroot -padmin;
set global general_log = 1;
我仅出于开发目的使用 docker-compose 启动 docker 容器,它看起来像这样。
version: "3.8"
services:
mysql_service:
container_name: db_container
build:
context: .
dockerfile: ./db/Dockerfile.dev
# needed for mysql 8+
command: --default-authentication-plugin=mysql_native_password
restart: always
hostname: db
ports:
- target: 3306
published: 3306
protocol: tcp
mode: host
environment:
- MYSQL_ROOT_PASSWORD=admin
- MYSQL_DATABASE=example
- MYSQL_ROOT_HOST=localhost
- MYSQL_ALLOW_EMPTY_PASSWORD=yes
volumes:
- ./db/:/docker-entrypoint-initdb.d/
- data_volume:/var/lib/mysql/
cap_add:
- ALL
volumes:
data_volume:
driver: local
和 Dockerfile
FROM mysql:8.0
COPY ./DevOps/Docker/db/set_logging.sh /usr/local/bin
ENTRYPOINT ["docker-entrypoint.sh", "./usr/local/bin/set_logging.sh"]
但是,副本通过但脚本从未执行。 脚本的样子
#!/bin/bash
mysql -uroot -padmin -e "set global general_log = 1"
关于让这个命令通过的任何建议?这只是为了开发
【问题讨论】:
-
这里不是唯一的选择,而是最简单的选择。放弃您为尝试解决此问题所做的所有工作,只需将
--general-log=1添加到您的 docker-compose 文件中的服务命令中。要查看所有配置选项的列表,您可以在 docker 命令行上为 mysql:8.0 设置,而无需将自定义配置推送到您的容器:docker run -it --rm mysql:8.0 --verbose --help。 official mysql docker image documentation 有更多关于如何为各种用例自定义容器的信息。 -
天哪,我不知道你可以在 docker-compose 文件的
- command部分有多个命令。
标签: mysql bash docker docker-compose