首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么docker重启后会丢失数据?

为什么docker重启后会丢失数据?
EN

Stack Overflow用户
提问于 2019-06-10 14:34:41
回答 1查看 11.4K关注 0票数 5

我是码头新手,需要一些建议。我准备用Gitea建立我自己的个人git存储库。docker编写文件可以在下面看到。当我第一次运行这个文件时,一切都很好。当我重新启动计算机或Docker,然后页面加载,但它是空的,没有repos,什么都没有时,问题就出现了。此外,无法使用首次安装后设置的凭据登录。重新启动后,与数据库的连接似乎丢失了。

docker撰写文件:

代码语言:javascript
复制
version: "2"

networks:
  gitea:
    external: false

volumes:
  gitea:
    driver: local

services:
  server:
    image: gitea/gitea:latest
    environment:
      - USER_UID=1000
      - USER_GID=1000
      - DB_TYPE=mysql
      - DB_HOST=db:3306
      - DB_NAME=gitea
      - DB_USER=gitea
      - DB_PASSWD=gitea
    restart: always
    networks:
      - gitea
    volumes:
      #- ./gitea:/data
       - gitea:/data
    ports:
       - "3000:3000"
       - "222:22"
    depends_on:
      - db

  db:
    image: mysql:5.7
    restart: always
    environment:
      - MYSQL_ROOT_PASSWORD=gitea
      - MYSQL_USER=gitea
      - MYSQL_PASSWORD=gitea
      - MYSQL_DATABASE=gitea
    networks:
      - gitea
    volumes:
      - ./mysql:/var/lib/mysql
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-06-10 14:36:08

您应该声明一个本地文件夹as a volume,以便获得持久数据。与here for instance中的一样

代码语言:javascript
复制
docker run -v /host/directory:/container/directory -other -options image_name command_to_run

否则,在移除容器时,默认情况下会丢弃在现有图像层顶部写入的任何数据。

这是使用联合文件系统:(请参阅"Digging into Docker layers")

如果是gitea (docker),请确保您有一个本地数据和mysql文件夹,由Docker镜像挂载。

代码语言:javascript
复制
volumes:
 - ./data:/data
volumes:
 - ./mysql:/var/lib/mysql

您已经使用了

代码语言:javascript
复制
volumes:
      #- ./gitea:/data
       - gitea:/data

这将声明一个名为"gitea“的卷(而不是Docker ),存储到您的Docker安装中。

您可以对db部分尝试相同的方法:

代码语言:javascript
复制
volumes:
 - mysql:/var/lib/mysql
票数 8
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56521547

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档