Docker 镜像推送但我的音量不存在

此消息用于解决我在 php 应用程序中使用 docker 时遇到的问题。


事实上,我在本地执行我的 dockers 图像(nginx、phpmyadmin 和 php 与我的应用程序)并且一切正常。但是,我使用安装在我的容器应用程序中的卷和 php,这使我能够修改热文件(无需在每次编辑时构建)。


但是,当我将此映像推送到存储库并将其拉到另一个桌面时,包含我的应用程序的卷不存在。


你有没有遇到过这种担忧?


请找到我的 docker-compose.yml 和 Dockerfile :


docker-compose.yml


version: "3.7"

services:

  app:

    build:

      args:

        user: web

        uid: 1000

      context: ./

      dockerfile: Dockerfile

    image: myblog

    container_name: myblog-app

    restart: unless-stopped

    working_dir: /var/www/

    volumes:

      - ./:/var/www

    networks:

      - myblog


  db:

    image: mysql:5.7

    container_name: myblog-db

    restart: unless-stopped

    environment:

      MYSQL_DATABASE: ${DB_DATABASE}

      MYSQL_ROOT_PASSWORD: ${DB_PASSWORD}

      MYSQL_PASSWORD: ${DB_PASSWORD}

      MYSQL_USER: ${DB_USERNAME}

      SERVICE_TAGS: dev

      SERVICE_NAME: mysql

    volumes:

      - ./.docker/mysql/database.sql:/docker-entrypoint-initdb.d/init.sql

      - ./.docker/mysql/data:/var/lib/mysql

    networks:

      - myblog


  phpmyadmin:

    depends_on:

      - db

    image: phpmyadmin/phpmyadmin

    restart: always

    ports:

      - 8002:80

    environment:

      PMA_HOST: db

      MYSQL_ROOT_PASSWORD: ${DB_PASSWORD}

    networks:

      - myblog


  nginx:

    image: nginx:alpine

    container_name: myblog-nginx

    restart: unless-stopped

    ports:

      - 8000:80

    volumes:

      - ./:/var/www

      - ./.docker/nginx/conf.d:/etc/nginx/conf.d

    networks:

      - myblog


networks:

  myblog:

    driver: bridge



交互式爱情
浏览 78回答 3
3回答

精慕HU

这是预期的行为,因为卷内的数据不是图像的一部分。卷用于持久化容器中生成的数据,或通过绑定挂载(例如配置、凭据或证书)将动态数据传递到容器中。https://docs.docker.com/storage/volumes/你docker-compose.yml和它的服务使用卷挂载你的本地目录- .:/path/to/dir只对本地开发有好处,因为你可能会立即看到你的应用程序的变化,而不必重建图像。如果你想在另一台机器上的图像中看到你的代码,你需要COPY在你的机器上使用Dockerfile,重建图像并在每次更改代码时推送!您还需要docker-compose.yml通过添加卷来更改您的。https://docs.docker.com/compose/compose-file/#volumes

www说

非常感谢您的明确答复。现在我明白我的配置有什么问题以及我需要做什么。对于搜索解决方案以在同一个 Dockerfile 中管理开发环境和生产环境的人,您可以使用参数 :)

白衣染霜花

您是否尝试过使用命名卷而不是基于路径的卷?这将使 Docker 为您管理更多卷,并可能为您提供所需的行为。https://nickjanetakis.com/blog/docker-tip-28-named-volumes-vs-path-based-volumesDocker volume 不持久化数据
打开App,查看更多内容
随时随地看视频慕课网APP