我想使用centos/ mysql -56-centos7镜像启动一个mysql容器。有两种方法:
1)
docker run -d --name mysql -e MYSQL_ROOT_PASSWORD=123456 centos/mysql-56-centos7
这种方式很好用
2) docker-compose.yml
version: '2'
services:
mysql:
image: centos/mysql-56-centos7:latest
restart: always
container_name: mysql
在.env文件中,我设置了
MYSQL_ROOT_PASSWORD=123456
但是开始总是失败的:
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
b651a67ae0b310a7e08ac20919c08583e50a2dc9f515a16618c4db130ea65415 centos/mysql-56-centos7:latest "container-entrypoint run-mysqld" 55 seconds ago Restarting (1) 25 seconds ago mysql
日志信息
mysql | => sourcing 20-validate-variables.sh ...
mysql | You must either specify the following environment variables:
mysql | MYSQL_USER (regex: '^[a-zA-Z0-9_]+$')
mysql | MYSQL_PASSWORD (regex: '^[a-zA-Z0-9_~!@#$%^&*()-=<>,.?;:|]+$')
mysql | MYSQL_DATABASE (regex: '^[a-zA-Z0-9_]+$')
mysql | Or the following environment variable:
mysql | MYSQL_ROOT_PASSWORD (regex: '^[a-zA-Z0-9_~!@#$%^&*()-=<>,.?;:|]+$')
mysql | Or both.
mysql | Optional Settings:
mysql | MYSQL_LOWER_CASE_TABLE_NAMES (default: 0)
mysql | MYSQL_LOG_QUERIES_ENABLED (default: 0)
mysql | MYSQL_MAX_CONNECTIONS (default: 151)
mysql | MYSQL_FT_MIN_WORD_LEN (default: 4)
mysql | MYSQL_FT_MAX_WORD_LEN (default: 20)
mysql | MYSQL_AIO (default: 1)
mysql | MYSQL_KEY_BUFFER_SIZE (default: 32M or 10% of available memory)
mysql | MYSQL_MAX_ALLOWED_PACKET (default: 200M)
mysql | MYSQL_TABLE_OPEN_CACHE (default: 400)
mysql | MYSQL_SORT_BUFFER_SIZE (default: 256K)
mysql | MYSQL_READ_BUFFER_SIZE (default: 8M or 5% of available memory)
mysql | MYSQL_INNODB_BUFFER_POOL_SIZE (default: 32M or 50% of available memory)
mysql | MYSQL_INNODB_LOG_FILE_SIZE (default: 8M or 15% of available memory)
mysql | MYSQL_INNODB_LOG_BUFFER_SIZE (default: 8M or 15% of available memory)
mysql |
mysql | For more information, see https://github.com/sclorg/mysql-container
我认为这两种方式是等价的,但它们首先成功,第二种方式失败,为什么?
发布于 2020-01-09 19:14:13
在Docker Compose示例中,您实际上并没有设置环境变量。您需要显式添加它:
version: '3'
services:
mysql:
image: centos/mysql-56-centos7:latest
environment:
- MYSQL_ROOT_PASSWORD
# restart: always # once it's actually working
.env
文件makes values available for substitution位于docker-compose.yml
文件中,但不会自动将它们注入容器中。您需要一个environment:
部分。如果只列出一个变量名,它就会从环境中获取值(文档中没有明确说明“或一个.env
文件”,但我认为它应该可以工作)。
https://stackoverflow.com/questions/59662109
复制相似问题