Linux/macOS Üzerinde Docker
Bu kılavuzda, MyEMS'i Linux (veya macOS) üzerinde Docker ile dağıtacaksınız.
Önkoşullar
- Ana makinede docker ve npm kurulu olmalıdır.
- MySQL sunucusu kurulu olmalıdır.
- MySQL veritabanına, Docker Engine'in çalıştığı ana makineden erişilebilmelidir.
- Donanım gereksinimleri: En az 4GB RAM, 20GB depolama alanı (veritabanı ve Docker konteyneri için).
Kaynak kodu klonlayın:
cd ~
git clone https://github.com/myems/myems
1. Adım Veritabanı
Veritabanı bölümüne bakın
2. Adım myems-api
Bu bölümde, myems-api'yi Docker üzerinde kuracaksınız.
- Kaynak kodu kök dizine kopyalayın
cp -r myems/myems-api /
cd /myems-api
- example.env dosyasına göre .env dosyasını oluşturun
127.0.0.1 adresini gerçek HOST IP adresiyle manuel olarak değiştirin.
cp example.env .env
- Kaynaktan imaj oluşturun
docker build -t myems/myems-api .
Birden fazla platform için derleme yapmak ve yalnızca derlemeyi başlatan kullanıcının mimarisi ve işletim sistemiyle sınırlı kalmamak için buildx kullanabilir ve --platform bayrağı ile hedef platformu belirtebilirsiniz (örneğin, linux/amd64, linux/arm64 veya darwin/amd64).
docker buildx build --platform=linux/amd64 -t myems/myems-api .
- Bir Docker konteyneri çalıştırın
Ana makinede, paylaşımlı bir yükleme klasörü oluşturun:
mkdir /myems-upload
Bir konteyner oluşturun, paylaşımlı klasörü ve .env dosyasını konteynere bind-mount edin:
docker run -d -p 8000:8000 -v /myems-upload:/var/www/myems-admin/upload -v /myems-api/.env:/app/.env:ro --log-opt max-size=1m --log-opt max-file=2 --restart always --name myems-api myems/myems-api
-
-d Konteyneri arka planda çalıştırır ve konteyner ID'sini yazdırır
-
-p Konteynerin port(lar)ını ana makineye yayınlar, 8000:8000 (Ana Makine:Konteyner) konteynerin 8000 portunu ana makinenin 8000 portuna bağlar.
-
-v Eğer ana makinede henüz mevcut olmayan bir dosya veya dizini bind-mount ederseniz, -v sizin için bu uç noktayı oluşturur. Her zaman bir dizin olarak oluşturulur. ro seçeneği varsa, mount edilen dosya/dizin konteynerde salt okunur olur. v4.7.0 veya önceki sürümler için '/app/.env' yerine '/code/.env' kullanın.
-
--log-opt max-size=2m Log dosyasının döndürülmeden önceki maksimum boyutu. Birim olarak k, m veya g kullanılabilir.
-
--log-opt max-file=2 Maksimum log dosyası sayısı. Fazla dosya oluşursa en eski dosya silinir.
-
--restart Konteyner çıktığında uygulanacak yeniden başlatma politikası
-
--name Konteynere bir isim atar
İki nokta üst üste öncesindeki mutlak yol ana makinedeki yoldur ve sisteminizde değişebilir. Sonrasındaki yol konteynerdeki yoldur ve değiştirilemez. .env dosyasını bind-mount parametresi olarak geçirerek yapılandırma değerlerini daha sonra değiştirebilirsiniz. .env dosyasını değiştirirseniz, değişikliğin etkili olması için konteyneri yeniden başlatın.
Görüntüyü başka bir bilgisayara taşımak isterseniz,
- İmajı tar dosyasına aktarın
docker save --output myems-api.tar myems/myems-api
- Tar dosyasını başka bir bilgisayara kopyalayın ve ardından imajı tar dosyasından yükleyin
docker load --input .\myems-api.tar
3. Adım myems-admin
Bu bölümde, myems-admin'i Docker üzerinde kuracaksınız.
- Kaynak kodu kök dizine kopyalayın
cp -r myems/myems-admin /
cd /myems-admin
nginx.conf dosyasındaki 127.0.0.1:8000 adresini myems-api'nin gerçek HOST IP adresi ve portu ile manuel olarak değiştirin.
nano nginx.conf
proxy_pass http://127.0.0.1:8000/;
- Kaynaktan imaj oluşturun
docker build -t myems/myems-admin .
Birden fazla platform için derleme yapmak ve yalnızca derlemeyi başlatan kullanıcının mimarisi ve işletim sistemiyle sınırlı kalmamak için buildx kullanabilir ve --platform bayrağı ile hedef platformu belirtebilirsiniz (örneğin, linux/amd64, linux/arm64 veya darwin/amd64).
docker buildx build --platform=linux/amd64 -t myems/myems-admin .
- Bir Docker konteyneri çalıştırın
Ana makinede, paylaşımlı bir yükleme klasörü oluşturun:
mkdir /myems-upload
Bir konteyner oluşturun, paylaşımlı yükleme klasörünü ve nginx.conf dosyasını konteynere bind-mount edin
docker run -d -p 8001:8001 -v /myems-upload:/var/www/myems-admin/upload -v /myems-admin/nginx.conf:/etc/nginx/nginx.conf:ro --log-opt max-size=1m --log-opt max-file=2 --restart always --name myems-admin myems/myems-admin
-
-d Konteyneri arka planda çalıştırır ve konteyner ID'sini yazdırır
-
-p Konteynerin port(lar)ını ana makineye yayınlar, 8001:8001 (Ana Makine:Konteyner) konteynerin 8001 portunu ana makinenin 8001 portuna bağlar.
-
-v Eğer ana makinede henüz mevcut olmayan bir dosya veya dizini bind-mount ederseniz, -v sizin için bu uç noktayı oluşturur. Her zaman bir dizin olarak oluşturulur. ro seçeneği varsa, mount edilen dosya/dizin konteynerde salt okunur olur. v4.7.0 veya önceki sürümler için '/app/.env' yerine '/code/.env' kullanın.
-
--log-opt max-size=2m Log dosyasının döndürülmeden önceki maksimum boyutu. Birim olarak k, m veya g kullanılabilir.
-
--log-opt max-file=2 Maksimum log dosyası sayısı. Fazla dosya oluşursa en eski dosya silinir.
-
--restart Konteyner çıktığında uygulanacak yeniden başlatma politikası
-
--name Konteynere bir isim atar
Görüntüyü başka bir bilgisayara taşımak isterseniz,
- İmajı tar dosyasına aktarın
docker save --output myems-admin.tar myems/myems-admin
- Tar dosyasını başka bir bilgisayara kopyalayın ve ardından imajı tar dosyasından yükleyin
docker load --input .\myems-admin.tar
4. Adım myems-modbus-tcp
Bu bölümde, myems-modbus-tcp'yi Docker üzerinde kuracaksınız.
- Kaynak kodu kök dizine kopyalayın
cp -r myems/myems-modbus-tcp /
cd /myems-modbus-tcp
- example.env dosyasına göre .env dosyasını oluşturun
127.0.0.1 adresini gerçek HOST IP adresiyle manuel olarak değiştirin.
cp example.env .env
- Kaynaktan imaj oluşturun
docker build -t myems/myems-modbus-tcp .
Birden fazla platform için derleme yapmak ve yalnızca derlemeyi başlatan kullanıcının mimarisi ve işletim sistemiyle sınırlı kalmamak için buildx kullanabilir ve --platform bayrağı ile hedef platformu belirtebilirsiniz (örneğin, linux/amd64, linux/arm64 veya darwin/amd64).
docker buildx build --platform=linux/amd64 -t myems/myems-modbus-tcp .
- Bir Docker konteyneri çalıştırın (süper kullanıcı olarak çalıştırın)
docker run -d -v /myems-modbus-tcp/.env:/app/.env:ro --log-opt max-size=1m --log-opt max-file=2 --restart always --name myems-modbus-tcp myems/myems-modbus-tcp
-
-d Run container in background and print container ID
-
-v If you use -v or --volume to bind-mount a file or directory that does not yet exist on the Docker host, -v creates the endpoint for you. It is always created as a directory. The ro option, if present, causes the bind mount to be mounted into the container as read-only. For v4.7.0 or earlier versions, use '/code/.env' instead of '/app/.env'.
-
--log-opt max-size=2m The maximum size of the log before it is rolled. A positive integer plus a modifier representing the unit of measure (k, m, or g).
-
--log-opt max-file=2 The maximum number of log files that can be present. If rolling the logs creates excess files, the oldest file is removed. A positive integer.
-
--restart Restart policy to apply when a container exits
-
--name Assign a name to the container
İki nokta üst üste öncesindeki mutlak yol ana makinedeki yoldur ve sisteminizde değişebilir. Sonrasındaki yol konteynerdeki yoldur ve değiştirilemez. .env dosyasını bind-mount parametresi olarak geçirerek yapılandırma değerlerini daha sonra değiştirebilirsiniz. .env dosyasını değiştirirseniz, değişikliğin etkili olması için konteyneri yeniden başlatın.
- Docker konteynerini başka bir bilgisayara taşıyın
Konteyneri başka bir bilgisayara taşımak için,
- İmajı tar dosyasına aktarın
docker save --output myems-modbus-tcp.tar myems/myems-modbus-tcp
- Tar dosyasını başka bir bilgisayara kopyalayın ve ardından imajı tar dosyasından yükleyin
docker load --input .\myems-modbus-tcp.tar
5. Adım myems-cleaning
Bu bölümde, myems-cleaning'i Docker üzerinde kuracaksınız.
- Kaynak kodu kök dizine kopyalayın
cp -r myems/myems-cleaning /
cd /myems-cleaning
- example.env dosyasına göre .env dosyasını oluşturun
127.0.0.1 adresini gerçek HOST IP adresiyle manuel olarak değiştirin.
cp example.env .env
- Kaynaktan imaj oluşturun
docker build -t myems/myems-cleaning .
Birden fazla platform için derleme yapmak ve yalnızca derlemeyi başlatan kullanıcının mimarisi ve işletim sistemiyle sınırlı kalmamak için buildx kullanabilir ve --platform bayrağı ile hedef platformu belirtebilirsiniz (örneğin, linux/amd64, linux/arm64 veya darwin/amd64).
docker buildx build --platform=linux/amd64 -t myems/myems-cleaning .
- Bir Docker konteyneri çalıştırın (süper kullanıcı olarak çalıştırın)
docker run -d -v /myems-cleaning/.env:/app/.env:ro --log-opt max-size=1m --log-opt max-file=2 --restart always --name myems-cleaning myems/myems-cleaning
-
-d Run container in background and print container ID
-
-v If you use -v or --volume to bind-mount a file or directory that does not yet exist on the Docker host, -v creates the endpoint for you. It is always created as a directory. The ro option, if present, causes the bind mount to be mounted into the container as read-only. For v4.7.0 or earlier versions, use '/code/.env' instead of '/app/.env'.
-
--log-opt max-size=2m The maximum size of the log before it is rolled. A positive integer plus a modifier representing the unit of measure (k, m, or g).
-
--log-opt max-file=2 The maximum number of log files that can be present. If rolling the logs creates excess files, the oldest file is removed. A positive integer.
-
--restart Restart policy to apply when a container exits
-
--name Assign a name to the container
İki nokta üst üste öncesindeki mutlak yol ana makinedeki yoldur ve sisteminizde değişebilir. Sonrasındaki yol konteynerdeki yoldur ve değiştirilemez. .env dosyasını bind-mount parametresi olarak geçirerek yapılandırma değerlerini daha sonra değiştirebilirsiniz. .env dosyasını değiştirirseniz, değişikliğin etkili olması için konteyneri yeniden başlatın.
- Docker konteynerini başka bir bilgisayara taşıyın
Konteyneri başka bir bilgisayara taşımak için,
- İmajı tar dosyasına aktarın
docker save --output myems-cleaning.tar myems/myems-cleaning
- Tar dosyasını başka bir bilgisayara kopyalayın ve ardından imajı tar dosyasından yükleyin
docker load --input .\myems-cleaning.tar
6. Adım myems-normalization
Bu bölümde, myems-normalization'ı Docker üzerinde kuracaksınız.
- Kaynak kodu kök dizine kopyalayın
cp -r myems/myems-normalization /
cd /myems-normalization
- example.env dosyasına göre .env dosyasını oluşturun
127.0.0.1 adresini gerçek HOST IP adresiyle manuel olarak değiştirin.
cp example.env .env
- Kaynaktan imaj oluşturun
docker build -t myems/myems-normalization .
Birden fazla platform için derleme yapmak ve yalnızca derlemeyi başlatan kullanıcının mimarisi ve işletim sistemiyle sınırlı kalmamak için buildx kullanabilir ve --platform bayrağı ile hedef platformu belirtebilirsiniz (örneğin, linux/amd64, linux/arm64 veya darwin/amd64).
docker buildx build --platform=linux/amd64 -t myems/myems-normalization .
- Bir Docker konteyneri çalıştırın (süper kullanıcı olarak çalıştırın)
docker run -d -v /myems-normalization/.env:/app/.env:ro --log-opt max-size=1m --log-opt max-file=2 --restart always --name myems-normalization myems/myems-normalization
-
-d Run container in background and print container ID
-
-v If you use -v or --volume to bind-mount a file or directory that does not yet exist on the Docker host, -v creates the endpoint for you. It is always created as a directory. The ro option, if present, causes the bind mount to be mounted into the container as read-only. For v4.7.0 or earlier versions, use '/code/.env' instead of '/app/.env'.
-
--log-opt max-size=2m The maximum size of the log before it is rolled. A positive integer plus a modifier representing the unit of measure (k, m, or g).
-
--log-opt max-file=2 The maximum number of log files that can be present. If rolling the logs creates excess files, the oldest file is removed. A positive integer.
-
--restart Restart policy to apply when a container exits
-
--name Assign a name to the container
İki nokta üst üste öncesindeki mutlak yol ana makinedeki yoldur ve sisteminizde değişebilir. Sonrasındaki yol konteynerdeki yoldur ve değiştirilemez. .env dosyasını bind-mount parametresi olarak geçirerek yapılandırma değerlerini daha sonra değiştirebilirsiniz. .env dosyasını değiştirirseniz, değişikliğin etkili olması için konteyneri yeniden başlatın.
- Docker konteynerini başka bir bilgisayara taşıyın
Konteyneri başka bir bilgisayara taşımak için,
- İmajı tar dosyasına aktarın
docker save --output myems-normalization.tar myems/myems-normalization
- Tar dosyasını başka bir bilgisayara kopyalayın ve ardından imajı tar dosyasından yükleyin
docker load --input .\myems-normalization.tar
7. Adım myems-aggregation
Bu bölümde, myems-aggregation'ı Docker üzerinde kuracaksınız.
- Kaynak kodu kök dizine kopyalayın
cp -r myems/myems-aggregation /
cd /myems-aggregation
- example.env dosyasına göre .env dosyasını oluşturun
cp example.env .env
127.0.0.1 adresini gerçek HOST IP adresiyle manuel olarak değiştirin.
- Kaynaktan imaj oluşturun
docker build -t myems/myems-aggregation .
Birden fazla platform için derleme yapmak ve yalnızca derlemeyi başlatan kullanıcının mimarisi ve işletim sistemiyle sınırlı kalmamak için buildx kullanabilir ve --platform bayrağı ile hedef platformu belirtebilirsiniz (örneğin, linux/amd64, linux/arm64 veya darwin/amd64).
docker buildx build --platform=linux/amd64 -t myems/myems-aggregation .
- Bir Docker konteyneri çalıştırın (süper kullanıcı olarak çalıştırın)
docker run -d -v /myems-aggregation/.env:/app/.env:ro --log-opt max-size=1m --log-opt max-file=2 --restart always --name myems-aggregation myems/myems-aggregation
-
-d Run container in background and print container ID
-
-v If you use -v or --volume to bind-mount a file or directory that does not yet exist on the Docker host, -v creates the endpoint for you. It is always created as a directory. The ro option, if present, causes the bind mount to be mounted into the container as read-only. For v4.7.0 or earlier versions, use '/code/.env' instead of '/app/.env'.
-
--log-opt max-size=2m The maximum size of the log before it is rolled. A positive integer plus a modifier representing the unit of measure (k, m, or g).
-
--log-opt max-file=2 The maximum number of log files that can be present. If rolling the logs creates excess files, the oldest file is removed. A positive integer.
-
--restart Restart policy to apply when a container exits
-
--name Assign a name to the container
İki nokta üst üste öncesindeki mutlak yol ana makinedeki yoldur ve sisteminizde değişebilir. Sonrasındaki yol konteynerdeki yoldur ve değiştirilemez. .env dosyasını bind-mount parametresi olarak geçirerek yapılandırma değerlerini daha sonra değiştirebilirsiniz. .env dosyasını değiştirirseniz, değişikliğin etkili olması için konteyneri yeniden başlatın.
-
Docker konteynerini başka bir bilgisayara taşıy ın
-
İmajı tar dosyasına aktarın
docker save --output myems-aggregation.tar myems/myems-aggregation
- Tar dosyasını başka bir bilgisayara kopyalayın ve ardından imajı tar dosyasından yükleyin
docker load --input .\myems-aggregation.tar
8. Adım myems-web
Bu bölümde, myems-web'i Docker üzerinde kuracaksınız.
- config.js dosyasını düzenleyin:
https://mapbox.com adresinden mapboxToken alın ve showOnlineMap değerini true olarak ayarlayın. Çevrimiçi harita özelliğini kapatmak isterseniz, showOnlineMap değerini false olarak ayarlayın
cd myems/myems-web
nano src/config.js
- nginx.conf dosyasını düzenleyin:
nginx.conf dosyasındaki 127.0.0.1:8000 adresini myems-api'nin gerçek HOST ip ve portu ile değiştirin
cd myems/myems-web
nano nginx.conf
- Kaynak kodu kök dizine kopyalayın
cp -r myems/myems-web /
cd /myems-web
Bu bölümde 'npm run build' komutunu güvenle yok sayabilirsiniz, çünkü bu Dockerfile'a dahil edilmiştir
- Kaynaktan imaj oluşturun
docker build -t myems/myems-web .
docker image prune -f
Birden fazla platform için derleme yapmak ve yalnızca derlemeyi başlatan kullanıcının mimarisi ve işletim sistemiyle sınırlı kalmamak için buildx kullanabilir ve --platform bayrağı ile hedef platformu belirtebilirsiniz (örneğin, linux/amd64, linux/arm64 veya darwin/amd64).
docker buildx build --platform=linux/amd64 -t myems/myems-web .
docker image prune -f
- Bir Docker konteyneri çalıştırın
Ana makinede, nginx.conf dosyasını bind-mount edin
docker run -d -p 80:80 -v /myems-web/nginx.conf:/etc/nginx/nginx.conf:ro --log-opt max-size=1m --log-opt max-file=2 --restart always --name myems-web myems/myems-web
-
-d Konteyneri arka planda çalıştırır ve konteyner ID'sini yazdırır
-
-p Konteynerin port(lar)ını ana makineye yayınlar, 80:80 (Ana Makine:Konteyner) konteynerin 80 portunu ana makinenin 80 portuna bağlar.
-
-v Eğer ana makinede henüz mevcut olmayan bir dosya veya dizini bind-mount ederseniz, -v sizin için bu uç noktayı oluşturur. Her zaman bir dizin olarak oluşturulur. ro seçeneği varsa, mount edilen dosya/dizin konteynerde salt okunur olur. v4.7.0 veya önceki sürümler için '/app/.env' yerine '/code/.env' kullanın.
-
--log-opt max-size=2m Log dosyasının döndürülmeden önceki maksimum boyutu. Birim olarak k, m veya g kullanılabilir.
-
--log-opt max-file=2 Maksimum log dosyası sayısı. Fazla dosya oluşursa en eski dosya silinir.
-
--restart Konteyner çıktığında uygulanacak yeniden başlatma politikası
-
--name Konteynere bir isim atar
Görüntüyü başka bir bilgisayara taşımak isterseniz,
- İmajı tar dosyasına aktarın
docker save --output myems-web.tar myems/myems-web
- Tar dosyasını başka bir bilgisayara kopyalayın ve ardından imajı tar dosyasından yükleyin
docker load --input .\myems-web.tar
Kurulum Sonrası
Tebrikler! Artık MyEMS Admin UI ve Web UI'ye giriş yapabilirsiniz.
Varsayılan Portlar
MyEMS Web UI: 80
MyEMS API: 8000
MyEMS Admin UI: 8001
Sunucu adresinin 192.168.1.8 olduğunu varsayarsak (gerçek sunucu adresiyle değiştirin) MyEMS Web UI'ye http://192.168.1.8 adresinden erişin (80 portu atlanabilir) MyEMS Admin UI'ye http://192.168.1.8:8001 adresinden erişin
Varsayılan Şifreler
MyEMS Admin UI
Kullanıcı Adı:
administrator
Şifre:
!MyEMS1
MyEMS Web UI
Kullanıcı Adı:
administrator@myems.io
Şifre:
!MyEMS1
Sorun Giderme
ISS ağ sorunları nedeniyle, görüntü çekme işlemi yavaş olabilir. Üçüncü taraf hızlandırma servislerini kullanabilirsiniz.