Ana İçeriğe Git

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
Dikkat

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
Dikkat

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
Dikkat

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
Dikkat

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
Dikkat

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
Dikkat

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:
Not

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:
Dikkat

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
Bilgi

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

Görüntü çekme zaman aşımı sorunları nasıl çözülür

ISS ağ sorunları nedeniyle, görüntü çekme işlemi yavaş olabilir. Üçüncü taraf hızlandırma servislerini kullanabilirsiniz.