改进我的docker-compose.yaml的适应性

uoifb46i  于 2022-11-28  发布在  Docker
关注(0)|答案(1)|浏览(104)

我正在使用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:

(我也很感谢您对我的文件提出任何其他改进建议!)

ryevplcw

ryevplcw1#

Docker Compose支持变量插值。但是你需要记录这些值,人们可能只会假设docker compose up,让它在没有额外设置的情况下工作。
Compose通常不用于生产部署,因此您不会使用实际卷。也就是说,您可以简单地使用相对目录,而不是主文件夹或文件本身的绝对路径(./data/app:/mount),或者Docker管理的卷。

相关问题