代码之家  ›  专栏  ›  技术社区  ›  john triantafillakis

如何在docker compose中延迟挂载命名卷?

  •  0
  • john triantafillakis  · 技术社区  · 2 年前

    我试图创建两个实例:一个MySQL服务器和一个Samba服务器。我想将文件从Samba服务器共享到MySQL服务器。正如我从 docs ,Docker提供了可以在CIFS协议下工作的命名卷。正如我所理解的,在Docker Compose中,卷是在构建的基础上创建的。我怎样才能懒散地初始化它?

    例如,我有给定的docker compose:

    services:
      samba:
        container_name: samba
        env_file:
          - .env
        build:
          dockerfile: DockerFile.samba
          target: samba
          args:
            TOTAL_SAMBA_USERS: ${TOTAL_SAMBA_USERS}
            SAMBA_USER_1: ${SAMBA_USER_1}
            SAMBA_PASSWORD_1: ${SAMBA_PASSWORD_1}
            SAMBA_USER_2: ${SAMBA_USER_2}
            SAMBA_PASSWORD_2: ${SAMBA_PASSWORD_2}
            COMMON_NAME_CA: ${COMMON_NAME_CA}
            COMMON_NAME_SERVER: ${COMMON_NAME_SERVER}
            COMMON_NAME_CLIENT: ${COMMON_NAME_CLIENT}
            COUNTRY: ${COUNTRY}
            STATE: ${STATE}
            LOCALITY: ${LOCALITY}
            ORGANIZATION: ${ORGANIZATION}
            ORGANIZATIONAL_UNIT: ${ORGANIZATIONAL_UNIT}
            EMAIL_ADDRESS: ${EMAIL_ADDRESS}
            KEYSTORE_PASSWORD: ${KEYSTORE_PASSWORD}
        ports:
          - 445:445
          - 139:139
        volumes:
          - ./smb.conf:/etc/samba/smb.conf
        healthcheck:
          test: ["CMD", "smbclient", "//localhost/cert_share", "-U", "admin%1234", "-c", "ls"]
          interval: 2s
          timeout: 10s
          retries: 3
    
    
      mysql-db:
        container_name: mysql-db
        env_file:
          - .env
        build:
          dockerfile: DockerFile.mysql
          target: mysql
          args:
            MYSQL_ROOT_PASSWORD: ${MYSQL_ROOT_PASSWORD}
            MYSQL_USER: ${MYSQL_USER}
            MYSQL_PASSWORD: ${MYSQL_PASSWORD}
        ports:
          - 3306:3306
        volumes:
          - data:/var/lib/cert
        depends_on:
          samba:
            condition: service_healthy
    
    
    volumes:
      data:
        driver_opts:
          type: cifs
          o: username=admin,password=1234
          device: //localhost/cert_share/ 
    

    我希望Docker根据使用指定的依赖项进行相应的挂载 depends_on 。但是,正如您在下面看到的,我收到了来自守护进程的错误消息:

     ✔ Container samba            Created                                                                                                  
     ⠋ Container mysql-db         Creating                                                                                                 0.0s 
    Error response from daemon: failed to populate volume: error while mounting volume '/var/lib/docker/volumes/ssl-sample_data/_data': failed to mount local volume: mount //127.0.0.1/cert_share/:/var/lib/docker/volumes/ssl-sample_data/_data, data: username=admin,password=********: connection refused
    
    0 回复  |  直到 2 年前
    推荐文章