为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

PHP
交互式爱情 2022-12-30 17:07:08
此消息用于解决我在 php 应用程序中使用 docker 时遇到的问题。事实上,我在本地执行我的 dockers 图像(nginx、phpmyadmin 和 php 与我的应用程序)并且一切正常。但是,我使用安装在我的容器应用程序中的卷和 php,这使我能够修改热文件(无需在每次编辑时构建)。但是,当我将此映像推送到存储库并将其拉到另一个桌面时,包含我的应用程序的卷不存在。你有没有遇到过这种担忧?请找到我的 docker-compose.yml 和 Dockerfile :docker-compose.ymlversion: "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:      - myblognetworks:  myblog:    driver: bridge
查看完整描述

3 回答

?
精慕HU

TA贡献1845条经验 获得超8个赞

这是预期的行为,因为卷内的数据不是图像的一部分。卷用于持久化容器中生成的数据,或通过绑定挂载(例如配置、凭据或证书)将动态数据传递到容器中。

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


查看完整回答
反对 回复 2022-12-30
?
www说

TA贡献1775条经验 获得超8个赞

非常感谢您的明确答复。

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


查看完整回答
反对 回复 2022-12-30
?
白衣染霜花

TA贡献1796条经验 获得超10个赞

您是否尝试过使用命名卷而不是基于路径的卷?

这将使 Docker 为您管理更多卷,并可能为您提供所需的行为。

https://nickjanetakis.com/blog/docker-tip-28-named-volumes-vs-path-based-volumes

Docker volume 不持久化数据


查看完整回答
反对 回复 2022-12-30
  • 3 回答
  • 0 关注
  • 77 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信