..
在docker-compose中使用环境变量
和Makefile一样,docker compose中也是可以使用环境变量的,也是使用${var}
这样的方式来使用
version: '3'
services:
app:
build:
context: ./docker/app
dockerfile: Dockerfile
image: shippingdocker/app:latest
networks:
- appnet
volumes:
- .:/var/www/html
ports:
- ${APP_PORT}:80
working_dir: /var/www/html
cache:
image: redis:alpine
networks:
- appnet
volumes:
- cachedata:/data
db:
image: mysql:5.7
environment:
MYSQL_ROOT_PASSWORD: secret
MYSQL_DATABASE: homestead
MYSQL_USER: homestead
MYSQL_PASSWORD: secret
ports:
- ${DB_PORT}:3306
networks:
- appnet
volumes:
- dbdata:/var/lib/mysql
node:
build:
context: ./docker/node
dockerfile: Dockerfile
image: shippingdocker/node:latest
networks:
- appnet
volumes:
- .:/opt
working_dir: /opt
command: echo hi
networks:
appnet:
driver: bridge
volumes:
dbdata:
driver: local
cachedata:
driver: local
这里面好几个端口都是使用的环境变了来指定的,我们可以在启动docker compose的时候,传递这个环境变量
export APP_PORT=8080
docker-compose up -d
或者
DB_PORT=3306 docker-compose up -d
.env
docker-compose同时也支持dotfile
来管理环境变量,在docker compose的同级别目录下面放置.env
文件,docker-compose中的变量会被自动替换。