Docker compose不是安装卷吗?
如果运行此命令,卷将装载,容器将按预期启动,并处于初始化状态:Docker compose不是安装卷吗?,docker,docker-compose,gogs,Docker,Docker Compose,Gogs,如果运行此命令,卷将装载,容器将按预期启动,并处于初始化状态: docker run --name gogs --net mk1net --ip 203.0.113.3 -v gogs-data:/data -d gogs/gogs 但是,如果我运行相应的docker compose脚本,卷不会装载。容器仍会启动,但没有启动时读取的状态 version: '3' services: gogs: image: gogs/gogs ports:
docker run --name gogs --net mk1net --ip 203.0.113.3 -v gogs-data:/data -d gogs/gogs
但是,如果我运行相应的docker compose
脚本,卷不会装载。容器仍会启动,但没有启动时读取的状态
version: '3'
services:
gogs:
image: gogs/gogs
ports:
- "3000:3000"
volumes:
- gogs-data:/data
networks:
mk1net:
ipv4_address: 203.0.113.3
volumes:
gogs-data:
networks:
mk1net:
ipam:
config:
- subnet: 203.0.113.0/24
有什么想法吗?看看您的命令,
gogs数据
卷是在docker compose文件之外定义的,可能使用了如下内容:
docker volume create gogs-data
如果是这样,则需要在docker compose文件中将其指定为外部,如下所示:
volumes:
gogs-data:
external: true
volumes:
gogs-data:
external:
name: "${MY_GOGS_DATA_VOLUME}"
env MY_GOGS_DATA_VOLUME='selling-cars-gogs-data' docker-compose up
您还可以为外部卷定义不同的名称,并在docker compose文件中继续使用当前卷名,以避免命名冲突,例如,假设您的项目是关于销售汽车的,因此您希望外部卷被调用销售汽车gogs数据
,但希望在docker compose文件中保持简单,如gogs数据
,然后您可以执行以下操作:
volumes:
gogs-data:
external:
name: selling-cars-gogs-data
或者更好地使用环境变量为更动态的docker compose设计设置卷名,如下所示:
volumes:
gogs-data:
external: true
volumes:
gogs-data:
external:
name: "${MY_GOGS_DATA_VOLUME}"
env MY_GOGS_DATA_VOLUME='selling-cars-gogs-data' docker-compose up
然后像这样开始docker编写:
volumes:
gogs-data:
external: true
volumes:
gogs-data:
external:
name: "${MY_GOGS_DATA_VOLUME}"
env MY_GOGS_DATA_VOLUME='selling-cars-gogs-data' docker-compose up
希望这有帮助,这里还有一个指向docker compose external volumes文档的链接,以防您想了解更多信息:
您可以将几乎所有内容设置为外部,包括用于连接到其他docker compose容器的容器链接。对我来说都适用。不确定你的问题是什么/你看到了什么?它处于什么状态?你希望在哪里?什么不是您所期望的?gogs数据卷包含当前gogs存储库数据以及gogs配置文件。当我使用
docker compose
启动容器时,gogs会像从未配置过一样启动,但当我使用docker
命令启动容器时,卷装载,gogs从卷读取当前配置信息并显示存储库等。。。。您是否在try中创建了包含配置数据的卷?工作正常。我更改了项目的名称,并添加了几个用户(没有repo,但我不明白如果他们生活在同一个目录中会有什么不同),他们使用compose来保持重新启动。我没有使用你的ipam/net配置,但只是复制/粘贴了你的撰写文件。回答得很好-非常感谢!