irr*_*lar 4 sqlite docker dockerfile
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
Run Code Online (Sandbox Code Playgroud)
sqlite db文件在local-db目录中,但是我似乎没有VOLUME正确使用命令。关于如何对sqlite db文件进行数据库更改的任何想法仍然存在?
我不在乎该卷是在构建之前还是之后安装的。
我也尝试运行以下命令
user@cardboardlaptop:~/go/src/beginnerapp$ docker run -p 8080:8080 -v ./local-db:/go/src/beginnerapp/local-db beginnerapp
Run Code Online (Sandbox Code Playgroud)
docker:来自守护程序的错误响应:create ./local-db:“ ./local-db”包含本地卷名的无效字符,只有“ [a-zA-Z0-9] [a-zA-Z0-9_。 -]“ 被允许。如果要传递主机目录,请使用绝对路径。
编辑:使用/absolutepath/local-db而不是相对路径使用./local-db
您没有在Dockerfile中装载卷。VOLUME告诉docker这些目录中的内容可以通过docker run --volumes-from挂载
你是对的。Docker不允许在命令行上使用卷上的相对路径。
使用绝对路径运行docker:
docker run -v /host/db/local-db:/go/src/beginnerapp/local-db
您的数据库将保留在主机文件中 /host/db/local-db
如果要使用相对路径,则可以使用带有“ volumes”标签的docker-compose使其工作:
volumes:
- ./local-db:/go/src/beginnerapp/local-db
Run Code Online (Sandbox Code Playgroud)
您可以尝试以下配置:
/opt/docker/myproject)docker-compose.yml在相同的路径中创建一个文件,如下所示:Run Code Online (Sandbox Code Playgroud)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脚本上复制它或在其中包含任何初始化逻辑。
| 归档时间: |
|
| 查看次数: |
4687 次 |
| 最近记录: |