docker - docker-compose 中的 docker run -e 等效项是什么
问题描述
我无法在直接写入其中的 docker-compose 文件中获取环境变量以使其工作。与命令行类似的配置工作得很好,如下所示:
docker run --name container_name -d --network=my-net --mount type=bind,src=/Users/t2wu/Documents/Work/Dodo/Intron-Exon_expression/DockerCompose/intronexon_db/mnt_mysql,dst=/var/lib/mysql -e MYSQL_DATABASE=db_name -e MYSQL_USER=username -e MYSQL_PASSWORD=passwd mysql/mysql-server:8.0.13
这是一个 MySQL 实例,它设置了三个环境变量:MYSQL_DATABASE、MYSQL_USER 和 MYSQL_PASSWORD。我稍后可以启动 bashdocker exec -it container_name bash
并启动客户端mysql -u username -p
并正常连接。
然而,当我把它写在一个docker-compose.yml
:
version: "3.7"
services:
intronexon_db:
image: mysql/mysql-server:8.0.13
volumes:
- type: bind
source: ./intronexon_db/mnt_mysql
target: /var/lib/mysql
environment:
MYSQL_DATABASE: db_name
MYSQL_USER: username
MYSQL_PASSWORD: passwd
networks:
- my-net
networks:
my-net:
driver: bridge
然后当我使用mysql客户端时,就好像用户不存在一样。如何设置它以使其等效于-e
docker run 期间的标志?
编辑
docker-compose --version
节目docker-compose version 1.24.1, build 4667896b
编辑 2 环境标志确实有效。但我遇到了问题,因为:
部分问题在于 MySQL 需要一些时间才能准备好数据库、用户名和密码设置。而且我检查得太早了。
由于某种原因,我需要指定 localhost
mysql --host=localhost -u user -p
:. 指定127.0.0.1
将不起作用。由于某些未知原因,来自官方 docker 镜像的示例 stack.yml 不必指定容器
--host
何时运行。adminer
如果我消灭了管理员,则--host
需要给出标志。有时 MySQL 守护进程会停止。这可能与我的挂载目标有关
/var/lib/mysql
,但我不确定。command: --default-authentication-plugin=mysql_native_password
实际上很重要。我不知道为什么当我这样做时,我docker run
不需要对此做任何事情。
解决方案
yml 中的环境参数需要 - 在它们前面可能是罪魁祸首
version: "3.7"
services:
intronexon_db:
image: mysql/mysql-server:8.0.13
volumes:
- ./intronexon_db/mnt_mysql:/var/lib/mysql
environment:
- MYSQL_DATABASE: db_name
- MYSQL_USER: username
- MYSQL_PASSWORD: passwd
networks:
- my-net
networks:
my-net:
driver: bridge
推荐阅读
- php - 使用 php jquery 和 ajax 进行过滤系统的无限滚动
- azerothcore - Azerothcore 开发容器 - 无法登录服务器
- javascript - 您如何将某些 AWS Cognito 登录事件属性传递给 lambda 函数?
- python - OSError: Errno 30Read-only file system: 我正在尝试使用 Lambda 将一些文件从 FTP 传输到 S3。该代码适用于笔记本电脑,文件在 S3 中可见
- sql - 对列求和,对行进行计数,使用多个表来完全显示数据
- angular - 为什么我在 package-lock.json 中获得不同版本的依赖项?
- http - 我怎么知道我是否面临 CORS 错误?
- python - 如何在 PySimpleGUI 中创建应用程序菜单?[Python3、macOS 大苏尔]
- c# - 如何指定 XPath 以生成包含与其父元素属性连接的元素文本的列表
- tensorflow - PPO可以应用于REINFORCE算法而不是A2C算法吗?