Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/docker/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Docker compose不是安装卷吗?_Docker_Docker Compose_Gogs - Fatal编程技术网

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配置,但只是复制/粘贴了你的撰写文件。回答得很好-非常感谢!