Ağ Paylaşımları
Birçok endüstriyel tesis, dosyalarını yerel ağdaki bir NAS’ta veya bir Windows dosya sunucusunda tutar — tarama sonuçları \\nas\production konumuna gider, raporlar paylaşılan bir klasörden okunur, makineler dosya alışverişini SMB üzerinden yapar. Bir IronFlock uygulaması böyle bir paylaşımı doğrudan kendi container’larına bağlayabilir (mount); böylece kodunuz onu yerel bir dizin gibi okur ve yazar.
Bu, Dosya Depolama özelliğinin yerinde (on-premises) karşılığıdır: Dosya Depolama platformun yönetilen nesne depolamasıdır; ağ paylaşımı ise müşterinin kendi LAN’ındaki kendi dosya sunucusudur. Dosyaların müşterinin mevcut altyapısına ulaşması gerektiğinde bir paylaşım kullanın.
İki protokol desteklenir: SMB/CIFS (Windows dosya sunucuları, neredeyse her NAS) ve NFS (Linux tabanlı sunucularda yaygın).
Nasıl Çalışır
Bağlama, Docker’ın yerleşik local volume sürücüsü kullanılarak uygulamanızın docker-compose.yml dosyasında adlandırılmış bir volume olarak tanımlanır. Container’larınız başladığında bağlamayı cihazdaki Docker motoru kendisi gerçekleştirir — cihaza hiçbir şey kurulması gerekmez ve cihaz kullanıcısı hiçbir zaman komut satırına dokunmaz.
Paylaşımın adresi ve kimlik bilgileri compose dosyanıza yazılmaz. Bunlar, uygulama parametrelerinden cihaz başına doldurulan ${VARIABLE} yer tutucularıdır — cihaz başına diğer tüm ayarlarla aynı mekanizma. Kullanıcılar paylaşımı her cihazda uygulamanın Parametreler formundan (veya cihaz grubu başına bir kez) yapılandırır ve uygulamayı yeniden başlatır.
Volume’ü Tanımlama
docker-compose.yml dosyanıza driver_opts içeren adlandırılmış bir volume ekleyin ve onu ihtiyaç duyan servislere bağlayın:
services:
app:
build: .
volumes:
- netshare:/mnt/share
restart: unless-stopped
volumes:
netshare:
# Docker volume'leri, oluşturuldukları andaki ayarları korur. Revizyon
# parametresini volume adına koymak şu anlama gelir: revizyonu artırın,
# uygulamayı yeniden başlatın; güncel ayarlarla yeni bir volume oluşturulur.
name: "${APP_NAME}_share_r${SHARE_REV:-1}"
driver: local
driver_opts:
type: cifs
device: "//${SHARE_HOST}/${SHARE_NAME}"
o: "username=${SHARE_USER},password=${SHARE_PASSWORD},vers=3.0,uid=1000,gid=1000"Kodunuz artık /mnt/share ile sıradan bir dizin gibi çalışır.
Anlamaya değer kısımlar:
| Alan | Anlamı |
|---|---|
device | Paylaşım adresi: SMB için //server/sharename |
o | Virgülle ayrılmış bağlama seçenekleri. vers=3.0 SMB protokol sürümünü seçer; uid/gid dosyaların hangi container kullanıcısına ait olacağını belirler — bunları sürecinizin çalıştığı kullanıcıyla eşleştirin |
name | Volume’ün cihazdaki kimliği. Docker mevcut bir volume’ü asla değiştirmez; bu yüzden ayar revizyonu adın bir parçasıdır — aşağıya bakın |
${VAR:-fallback} | Varsayılan değerli Compose enterpolasyonu. Dosyanın her zaman ayrıştırılabilmesi için her yer tutucuya (boş bile olsa) bir varsayılan verin |
APP_NAME, platformun otomatik olarak sağladığı standart değişkenlerden biridir; volume adının kapsamını uygulamanızla sınırlar.
Yapılandırılabilir Hale Getirme
Kullanıcıların, parolası gizli değer (secret) olarak maskelenen düzgün bir form elde etmesi için yer tutucuları .ironflock/env-template.yml içinde tanımlayın:
SHARE_HOST:
label: "File server (IP or hostname)"
type: text
defaultValue: ""
description: "The SMB server or NAS on the device's local network."
SHARE_NAME:
label: "Share name"
type: text
defaultValue: ""
SHARE_USER:
label: "Username"
type: text
defaultValue: ""
SHARE_PASSWORD:
label: "Password"
type: text
secret: true
defaultValue: ""
SHARE_REV:
label: "Storage settings revision"
type: numeric
defaultValue: 1
description: "Increase by 1 whenever you change one of the settings above, then restart the app."Her cihazda kullanıcı, uygulamanın Parametreler bölümündeki formu doldurur, kaydeder ve uygulamayı yeniden başlatır. Parametreleri cihaz grubu düzeyinde ayarlamak, tüm bir filoyu tek adımda aynı dosya sunucusuna göre yapılandırır.
Ayarları Sonradan Değiştirme
Docker, bir volume’ü ilk kullanıldığı anda oluşturur ve o andan itibaren ayarlarını korur — yalnızca parametreleri düzenlemek, mevcut bir volume’ü yeni adrese yönlendirmez. Revizyon parametresi tam da bunun içindir: kullanıcı herhangi bir paylaşım ayarını değiştirdikten sonra revizyonu 1 artırır ve uygulamayı yeniden başlatır. Yeni volume adı, Docker’ın bağlamayı güncel değerlerle sıfırdan oluşturmasını sağlar.
Bunların hiçbiri dosya sunucusundaki hiçbir şeyi etkilemez: volume yalnızca bir bağlama tanımıdır. Volume’ü oluşturmak, yeni bir revizyon altında yeniden oluşturmak veya uygulamayı kaldırmak, paylaşımdaki dosyaları asla silmez.
NFS
Bir NFS sunucusu için aynı desen, farklı driver_opts ile kullanılır:
volumes:
netshare:
name: "${APP_NAME}_share_r${SHARE_REV:-1}"
driver: local
driver_opts:
type: nfs
device: ":${SHARE_PATH}"
o: "addr=${SHARE_HOST},nfsvers=4"SHARE_PATH, dışa aktarılan yoldur (ör. /exports/production); addr ise sunucudur. NFSv4’ü tercih edin (nfsvers=4) — yalnızca bu tek seçeneğe ihtiyaç duyar ve cihazda ek servis gerektirmez.
Cihaz Desteği
| Cihaz türü | SMB/CIFS | NFS |
|---|---|---|
| Linux cihazlar (özel Linux kurulumu) | ✓ | ✓ |
| Windows cihazlar (Docker Desktop) | ✓ | ✓ |
| FlockOS cihazlar | henüz mevcut değil | henüz mevcut değil |
Windows cihazlarda bağlama, Docker Desktop’ın her iki protokol istemcisiyle birlikte gelen Linux ortamının içinde gerçekleşir — cihazın LAN’ındaki SMB sunucularına erişim dahil, kutudan çıktığı gibi çalışır. Linux cihazlarda protokol desteğini standart dağıtım çekirdekleri getirir; hiçbir paket kurulması gerekmez. FlockOS desteği, henüz yayınlanmamış bir işletim sistemi güncellemesi gerektirir — orada ihtiyacınız varsa bizimle iletişime geçin.
Bağlama işlemi güncel bir cihaz agent’ı gerektirir; agent’lar kendilerini otomatik olarak günceller.
Bilmekte Fayda Var
- Yapılandırılmamış cihazlar: parametreler doldurulana kadar uygulama başlamaz; canlı günlüklerinde bir bağlama hatası görünür. Uygulamanızın paylaşım olmadan da çalışması gerekiyorsa, paylaşımı koşulsuz olarak bağlamayın — bunun yerine parametreleri kodunuzda okuyun ve paylaşıma bağımlı özellikleri atlayın.
- Kimlik bilgileri: dosya sunucusunda yalnızca bu paylaşıma erişimi olan özel bir hesap oluşturun ve parametrelerde onu kullanın. Parola platform arayüzünde maskelenir ancak bağlamayı gerçekleştiren cihaza teslim edilir — onu global bir yönetici kimlik bilgisi gibi değil, cihaza özgü bir bilgi gibi ele alın.
- Parolada virgül olmasın: SMB seçenekleri virgülle ayrılmış bir dize olarak taşınır; bu nedenle virgül içeren bir parola bağlamayı bozar. Paylaşım hesabının parolasını buna göre seçin.
- Sunucu adresi: bir IP adresi veya tesisin DNS’inin çözümleyebildiği bir ad kullanın.
nas.localgibi mDNS adları çoğu zaman Docker motorunun içinden çözümlenemez. - Güvenlik duvarı: cihaz, dosya sunucusuna TCP 445 (SMB) veya TCP 2049 (NFS) üzerinden ulaşır. Segmentlere ayrılmış fabrika ağlarında bu yolun açık olduğundan emin olun.
- Dosya sahipliği (SMB): dosyalar container’ın içinde, bağlama seçeneklerindeki
uid/giddeğerlerine ait olarak görünür. Süreciniz root olmayan bir kullanıcıyla çalışıyorsa bunları o kullanıcıya ayarlayın; aksi halde yazma işlemleri başarısız olur.