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 8GB 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