当前位置: 首页 > 知识库问答 >
问题:

Docker:我如何让sqlite db更改保持到db文件?

东方谦
2023-03-14
FROM golang:1.8

ADD . /go/src/beginnerapp

RUN go get -u github.com/gorilla/mux

RUN go get github.com/mattn/go-sqlite3

RUN go install beginnerapp/

VOLUME /go/src/beginnerapp/local-db

WORKDIR /go/src/beginnerapp

ENTRYPOINT /go/bin/beginnerapp

EXPOSE 8080
user@cardboardlaptop:~/go/src/beginnerapp$ docker run -p 8080:8080 -v ./local-db:/go/src/beginnerapp/local-db beginnerapp

Docker:来自后台进程的错误响应:create./local-db:“./local-db”包含本地卷名的无效字符,只允许使用“[a-zA-Z0-9][a-za-z0-9_.-]”。如果要传递主机目录,请使用绝对路径。

编辑:使用/absolutepath/local-db代替相对路径./local-db

共有1个答案

景成和
2023-03-14

您没有在DockerFile中装入卷。VOLUME告诉docker这些目录上的内容可以通过docker run-volumes-from挂载

你是对的。Docker在命令行上不允许卷上的相对路径。

使用绝对路径运行docker:

volumes:
  - ./local-db:/go/src/beginnerapp/local-db
    null
version: "2.0"
services:
  myproject:
    build: .
    volumes:
      - "./local-db:/go/src/beginnerapp/local-db"
  • 在同一路径中执行docker-compose up-d myproject

数据库应存储/opt/docker/myproject/local-db

只是一个评论。local-db的内容(如果有)将被./local-dbpath(空)的内容替换。如果容器有任何信息(初始化的数据库),最好用Docker CP复制它,或者在入口点或命令shell脚本上包含任何init逻辑。

 类似资料:
  • 我是docker世界的新手:我正处于一个可以部署docker容器并做一些工作的阶段。 试图进入下一个级别保存我的更改并将我的容器/映像移动到另一台PC/服务器。 目前,我在Windows10上使用docker,但我确实可以访问Ubuntu16.04服务器来测试我的工作。 这就是我被困住的地方:我在Docker上部署了Wordpress和MariaDB图像。 我的WP运行得很好,我安装了几个主题,创

  • 问题内容: 当我从一个视图控制器移动到另一个视图控制器时,第一个控制器上的开关会重置自身,并且不会保持其状态。查看其他控制器后,如何恢复状态?以及在关闭应用程序后如何使其保存状态。我看过各种stackOverflow问题和响应以及Apple文档,但似乎没有任何效果。 这是我的带有开关的View Controller的类。 我是Swift和Xcode的初学者。预先感谢您的时间和帮助:) 问题答案:

  • 我的主要问题是,在我用命令< code > docker run-name d B- e MYSQL _ ROOT _ PASSWORD = test-d-p 3306:3306 mariadb 为我的Maria db创建了docker容器之后,我该如何访问sql db? 我在某处看到过一个使用临时(退出后容器被删除)容器的解决方案,但是再也找不到了。 我正在搜索这样的命令:< code > su

  • 问题内容: 我正在通过创建带有一些nodejs指令的来玩docker。现在,每次更改dockerfile时,我都会通过在项目文件夹中运行来重新创建映像,但这每次都会创建一个新映像,并很快吞没我的ssd。 更改dockerfile时,是否有一种方法可以更新现有映像,或者每次更改文件时都被迫创建一个新映像? 抱歉,这是一个愚蠢的问题 问题答案: 只要没有指令,Docker构建支持缓存。如果您正在积极地

  • SQLiteDB 是基础的 SQLite 的 Swift 封装。SQLiteDB 非常简单,不提供任何高级的函数,不完全是 Swift 编写的,所以跟 Swift 调用 sqlite C API 的方法会有点不同。 SQL 查询示例:  let data = db.query("SELECT * FROM customers WHERE name='John'")    let row = dat

  • 重要信息和方法 所以我有了这个方法(目前还不完全),它的唯一目的是改变每一个屏幕中的背景图像。下面是这样做的方法。 这意味着optionmenu是此方法更改的FXML文件的主根。 我面临的一个挑战是找到一种方法,将所有节点或根都带到这个类中,如果可能的话,还可以更改这些节点的ID。 我试图解决这个问题: 代码时间 我想你们首先需要看到的是我是如何从屏幕过渡到屏幕的。会有很多代码要看,所以请耐心等待