Dockerfile: 参考文件像别名而不是 Docker ADD?

Dockerfile: reference file like an alias instead of Docker ADD?

我的项目结构如下:

项目

当我 运行 docker-compose up -d 我希望我的 backend 容器将主机 app 文件夹镜像到容器 /var/www/app 所以我在应用程序直接反映在 docker 容器中,因此使我的开发变得容易。

目前我在 Dockerfile

中使用它
FROM backend
ADD ./app /var/www/app/
EXPOSE 8000

这基本上是复制文件,但我需要为每次更改重建:((

我创建了卷 APP_DATA_DIR=/var/www/app/public/data 来保存用户数据,但这将仅供生产使用。

对于开发,是否可以使用“ALIAS”(引用文件而不是复制)而不是 ADD?

docker-组成是

version: "3"
services:
  backend:
    container_name: backend
    image: serverBuild
    restart: always
    build: ./
    env_file: .env
    volumes:
      - "app_data:${APP_DATA_DIR}"
    ports:
      - "8000:8000"
    depends_on:
      - mariadb
    networks:
      - app_network

  mariadb:
    container_name: mariadb
    image: "mariadb:${MARIADB_VERSION}"
    restart: 'always'
    env_file: .env
    volumes:
      - "${SQL_INIT}:/docker-entrypoint-initdb.d"
      - "db_data:${MARIADB_DATA_DIR}"
      - "db_logs:${MARIADB_LOG_DIR}"
    environment:
      MYSQL_ROOT_PASSWORD: "${MYSQL_ROOT_PASSWORD}"
      MYSQL_DATABASE: "${MYSQL_DATABASE}"
      MYSQL_USER: "${MYSQL_USER}"
      MYSQL_PASSWORD: "${MYSQL_PASSWORD}"
    ports:
      - "3306:3306"
    networks:
      - app_network

volumes:
  app_data:
  db_data:
  db_logs:

networks:
  app_network:

.env

MARIADB_VERSION=latest
APP_DATA_DIR=/var/www/app/public/data
MARIADB_DATA_DIR=/var/lib/mysql
MARIADB_LOG_DIR=/var/logs/mysql
MYSQL_DATABASE=app
MYSQL_USER=app
MYSQL_PASSWORD=password
MYSQL_ROOT_PASSWORD=password
SQL_INIT=./database/dev

您可以简单地在服务内的 docker-compose.yml 中声明一个卷,这是您已经在使用的概念。只需做 ./app:/var/www/app/

我还想建议您在复制文件时使用COPY instead of ADD

我不知道你说 For development is it possible to ALIAS instead of ADD ? 是什么意思,所以除非你澄清这一点,否则我无法帮助你,但这应该是你想要的。