我正在尝试执行简单的代码。
docker-compose.yml
version: '3.7'
services:
test-environment:
image: alpine:3.9
environment:
VAR1: 'variable 1'
VAR2: '222'
command: echo variable1 = $VAR1; variable2 = $VAR2
预期的行为:在输出中查看
variable1 = variable 1; variable2 = 222
但是之后
docker-compose up
我下一个:
WARNING: The VAR1 variable is not set. Defaulting to a blank string.
WARNING: The VAR2 variable is not set. Defaulting to a blank string.
Recreating project_test-environment_1 ... done
Attaching to project_test-environment_1
test-environment_1 | variable1 = ; variable2 =
project_test-environment_1 exited with code 0
似乎环境变量未初始化。使用其他语法
environment:
- VAR1='variable 1'
- VAR2=222
也给出了相同的结果。
docker info输出:
Containers: 3
Running: 0
Paused: 0
Stopped: 3
Images: 5
Server Version: 18.09.2
Storage Driver: overlay2
Backing Filesystem: extfs
Supports d_type: true
Native Overlay Diff: true
Logging Driver: json-file
Cgroup Driver: cgroupfs
Plugins:
Volume: local
Network: bridge host macvlan null overlay
Log: awslogs fluentd gcplogs gelf journald json-file local logentries
splunk syslog
Swarm: inactive
Runtimes: runc
Default Runtime: runc
Init Binary: docker-init
containerd version: 9754871865f7fe2f4e74d43e2fc7ccd237edcbce
runc version: 09c8266bf2fcf9519a651b04ae54c967b9ab86ec
init version: fec3683
Security Options:
seccomp
Profile: default
Kernel Version: 4.9.125-linuxkit
Operating System: Docker for Windows
OSType: linux
Architecture: x86_64
CPUs: 1
Total Memory: 973.8MiB
Name: linuxkit-00155d694b07
ID: NA32:YPM3:D5GL:JQBM:H4BN:LE2B:4HLN:5B4A:AI7T:6SDS:LSVZ:P74L
Docker Root Dir: /var/lib/docker
Debug Mode (client): false
Debug Mode (server): true
File Descriptors: 22
Goroutines: 47
System Time: 2019-05-14T08:44:02.5767035Z
EventsListeners: 1
Registry: https://index.docker.io/v1/
Labels:
Experimental: false
Insecure Registries:
127.0.0.0/8
Live Restore Enabled: false
Product License: Community Engine
有人有解决问题的想法吗?
P.S。对不起,我的英语。
答案 0 :(得分:1)
environment
选项指定将哪些变量传递给容器。它们在docker-compose文件中不可用。
如果您的docker-compose文件需要env vars,请在同一目录中创建一个.env
文件:
#.env
VAR1=variable1
VAR2=222
现在它应该适用于docker-compose up
注释
从docker-compose中删除environment
选项-除非您需要容器内的var,否则没有任何意义。
答案 1 :(得分:1)
version: '3'
services:
test-environment:
image: alpine:3.9
environment:
VAR1: 'variable 1'
VAR2: '222'
command: '/bin/sh -c "echo $$VAR1 $$VAR2"'
重要点:
警告:未设置VAR1变量。默认为空字符串。 警告:未设置VAR2变量。默认为空字符串。