我正在使用docker-compose作为我的开源web应用程序。在github上发布我的项目的过程中,我想让我的docker-compose.yaml文件更容易理解和适应。我仍然是一个使用Docker的初学者,但文件能按预期工作。我只是想提高容器所使用的卷的可读性和可更改性。值a/large/directory/or/disk:/var/lib/postgresql/data
和/another/large/disk/:/something
很可能需要根据用户运行我的应用程序的系统进行调整。我可以为这些值引入变量吗?如何让这些值更明显地由运行我的应用程序的人进行更改?
我当前的docker-compose.yaml文件
version: '3'
services:
postgres:
image: postgres:latest
restart: always
expose:
- 5432
ports:
- 5432:5432
environment:
POSTGRES_USER: 'postgres'
POSTGRES_PASSWORD: 'password'
POSTGRES_DB: 'sample'
volumes:
- /a/large/directory/or/disk:/var/lib/postgresql/data
networks:
- mynetwork
mysql:
image: mysql:5.7
restart: always
environment:
MYSQL_DATABASE: 'db'
MYSQL_USER: 'user'
MYSQL_PASSWORD: 'password'
MYSQL_ROOT_PASSWORD: 'password'
expose:
- 3306
ports:
- 3306:3306
volumes:
- ~/data/mysql:/var/lib/mysql
networks:
- mynetwork
depends_on:
- postgres
core:
restart: always
build: core/
environment:
SPRING_APPLICATION_JSON: '{
"database.postgres.url": "postgres:5432/sample",
"database.postgres.user": "postgres",
"database.postgres.password": "password",
"database.mysql.host": "mysql",
"database.mysql.user": "root",
"database.mysql.password": "password"
}'
volumes:
- ~/data/core:/var
- /another/large/disk/:/something
networks:
- mynetwork
depends_on:
- mysql
ports:
- 8080:8080
web:
restart: always
build: web/
networks:
- mynetwork
depends_on:
- core
ports:
- 3000:3000
networks:
mynetwork:
driver: bridge
volumes:
myvolume:
(我也很感谢您对我的文件提出任何其他改进建议!)
1条答案
按热度按时间ryevplcw1#
Docker Compose支持变量插值。但是你需要记录这些值,人们可能只会假设
docker compose up
,让它在没有额外设置的情况下工作。Compose通常不用于生产部署,因此您不会使用实际卷。也就是说,您可以简单地使用相对目录,而不是主文件夹或文件本身的绝对路径(
./data/app:/mount
),或者Docker管理的卷。