docker-compose中的环境变量
来源:互联网 发布:linux ps aux 编辑:程序博客网 时间:2024/06/05 12:06
使用docker-compose部署一个MySQL server. mysq serverl的数据库文件存放在/var/lib/mysql目录下,为了重启mysql server不至于丢失创建的数据库数据,我们需要mount一个目录到mysql server容器的/var/lib/mysql。用docker-compose创建一个mysql instance大概如下:
version: '2'
services:
mysql:
image:mysql
volumes:
- ${MYSQL_DATA_DIR}:/var/lib/mysql
MYSQL_DATA_DIR是我用到的环境变量,希望配置到一个文件中,不同的MySQL instance用不同的目录,所以用到了环境变量。
粗粗的浏览了一下docker-compose参考文档,好像变量可以定义到一个文件中,如定义到mysql,.env中,这样mysql服务的定义就改为了:
version: '2'
services:
mysql:
image:mysql
env-file:
- ./mysql.env
volumes:
- ${MYSQL_DATA_DIR}:/var/lib/mysql
mysql.env的内容如下:
$ cat mysql.env
MYSQL_DATA_DIR=/my/sql/data-dir
然后启动mysql:
$ docker-compose up -d
docker-composegeic给出警告:
WARNING: The MYSQL_DATA_DIR variable is not set. Defaulting to a blank string.
奇怪,定义在MYSQL_DATA_DIR中的环境变量不起作用。环境变量也可以定义在environment中,不从文件中读取环境变量了,直接定义在environment中有如何。docker-compose.yml改为:
version: '2'
services:
mysql:
image:mysql
environment:
- MYSQL_DATA_DIR=/my/sql/data-dir
volumes:
- ${MYSQL_DATA_DIR}:/var/lib/mysql
用docker-compose启动mysql:
$docker-compose up -d
得到一样的错误。什么原因?文档上不是说可以用环境变量并且可以把环境变量定义在env_file和environment中吗。为什么就不工作呢?google一把,有人问同样的问题,看了几个回到,终于有人说到了点子上:
- env_file,environment中定义的环境变量是穿给container用的不是在docker-compose.yml中的环境变量用的
- docker-compose.yml中的环境变量${VARIABLE:-default}引用的是在.env中定义的或者同个shell export出来的
原来如此,把MYSQL_DATA_DIR定义在.env中试试:
$ cat .env
MYSQL_DATA_DIR=/my/sql/data-dir
然后重新启动mysql:
$ docker-compose up -d
这次没有任何错误了,一切工作正常。
- docker-compose中的环境变量
- docker compose
- docker compose
- docker-compose
- docker-compose
- docker-compose
- docker-compose
- docker compose
- docker-compose
- Docker Compose
- docker compose
- Docker Compose
- Docker Compose
- 【docker配置】Docker compose
- docker compose环境搭建
- Docker实践8:Compose
- Docker compose初探
- docker/compose项目笔记
- java环境配置
- 移植u-boot到stm32f407
- 实验楼 Shell
- c语言基础之const
- Codeforecs 424C Magic Formulas 规律+前缀和
- docker-compose中的环境变量
- SQL MIN() 函数
- SQL Server 入门学习总结---进阶篇
- 带有min函数的栈
- Android中两种序列化方式的比较Serializable和Parcelable
- Oracle 隐含参数查询
- 正确使用搜索引擎
- mapreduce系列(7)--查找共同好友
- C语言之左移和右移运算符