Pergi ke konten utama

docker-linux


Docker di Linux/macOS

Dalam panduan ini, Anda akan melakukan deploy MyEMS dengan Docker di Linux (atau macOS).

Prasyarat

  • Docker dan npm telah terinstal di host.
  • Server MySQL telah terinstal.
  • Basis data MySQL dapat diakses dari host di mana Docker Engine berjalan.
  • Persyaratan hardware: Setidaknya 4GB RAM, ruang penyimpanan 20GB (untuk basis data dan kontainer Docker).

Kloning kode sumber:

cd ~
git clone https://github.com/myems/myems

Langkah 1 Basis Data

Lihat Basis Data

Langkah 2 myems-api

Dalam bagian ini, Anda akan menginstal myems-api di Docker.

  • Salin kode sumber ke direktori root
cp -r myems/myems-api /
cd /myems-api
  • Buat file .env berdasarkan file example.env
Peringatan

Ganti secara manual 127.0.0.1 dengan alamat IP HOST yang sebenarnya.

cp example.env .env
  • Bangun Image dari Kode Sumber
docker build -t myems/myems-api .

Untuk membangun untuk beberapa platform (bukan hanya arsitektur dan sistem operasi yang dijalankan oleh pengguna yang memicu build), Anda dapat menggunakan buildx dan mengatur flag --platform untuk menentukan platform target untuk output build (misalnya, linux/amd64, linux/arm64, atau darwin/amd64).

docker buildx build --platform=linux/amd64 -t myems/myems-api .
  • Jalankan Kontainer Docker

Di host, buat folder berbagi file upload:

mkdir /myems-upload

Buat kontainer, bind-mount folder berbagi ke kontainer, dan juga bind-mount file .env ke kontainer:

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 : Menjalankan kontainer di latar belakang dan mencetak ID kontainer

  • -p : Mempublikasikan port(s) kontainer ke host, 8000:8000 (Host:Kontainer) mengikat port 8000 (kanan) dari kontainer ke port TCP 8000 (kiri) mesin host.

  • -v : Jika Anda menggunakan -v atau --volume untuk bind-mount file atau direktori yang belum ada di host Docker, -v akan membuat endpoint untuk Anda (selalu dibuat sebagai direktori). Opsi ro (jika ada) menyebabkan bind mount dipasang ke kontainer sebagai read-only (hanya baca). Untuk versi v4.7.0 atau lebih lama, gunakan '/code/.env' bukan '/app/.env'.

  • --log-opt max-size=2m : Ukuran maksimum log sebelum log di-roll (digulung). Bilangan bulat positif ditambah modifier yang mewakili satuan ukuran (k, m, atau g).

  • --log-opt max-file=2 : Jumlah maksimum file log yang dapat ada. Jika rolling log menciptakan file berlebih, file tertua akan dihapus. Bilangan bulat positif.

  • --restart : Kebijakan restart yang diterapkan ketika kontainer keluar.

  • --name : Memberikan nama ke kontainer.

Jalur absolut sebelum titik dua adalah jalur di host (bisa bervariasi di sistem Anda). Jalur absolut setelah titik dua adalah jalur di kontainer (TIDAK DAPAT diubah). Dengan meneruskan .env sebagai parameter bind-mount, Anda dapat mengubah nilai konfigurasi nanti. Jika Anda mengubah file .env, restart kontainer untuk membuat perubahan efektif.

Jika Anda ingin memindahkan image ke komputer lain:

  • Export image ke file tar
docker save --output myems-api.tar myems/myems-api
  • Salin file tar ke komputer lain, lalu load image dari file tar
docker load --input .\myems-api.tar

Langkah 3 myems-admin

Dalam bagian ini, Anda akan menginstal myems-admin di Docker.

  • Salin kode sumber ke direktori root
cp -r myems/myems-admin /
cd /myems-admin
Peringatan

Ganti secara manual 127.0.0.1:8000 di nginx.conf dengan alamat IP HOST aktual dan port myems-api.

nano nginx.conf
      proxy_pass http://127.0.0.1:8000/;
  • Bangun Image dari Kode Sumber
docker build -t myems/myems-admin .

Untuk membangun untuk beberapa platform (bukan hanya arsitektur dan sistem operasi yang dijalankan oleh pengguna yang memicu build), Anda dapat menggunakan buildx dan mengatur flag --platform untuk menentukan platform target untuk output build (misalnya, linux/amd64, linux/arm64, atau darwin/amd64).

docker buildx build --platform=linux/amd64 -t myems/myems-admin .
  • Jalankan Kontainer Docker

Di host, buat folder berbagi file upload:

mkdir /myems-upload

Buat kontainer, bind-mount folder berbagi file upload ke kontainer, dan juga bind-mount nginx.conf:

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 : Menjalankan kontainer di latar belakang dan mencetak ID kontainer

  • -p : Mempublikasikan port(s) kontainer ke host, 8001:8001 (Host:Kontainer) mengikat port 8001 (kanan) dari kontainer ke port TCP 8001 (kiri) mesin host.

  • -v : Jika Anda menggunakan -v atau --volume untuk bind-mount file atau direktori yang belum ada di host Docker, -v akan membuat endpoint untuk Anda (selalu dibuat sebagai direktori). Opsi ro (jika ada) menyebabkan bind mount dipasang ke kontainer sebagai read-only (hanya baca). Untuk versi v4.7.0 atau lebih lama, gunakan '/code/.env' bukan '/app/.env'.

  • --log-opt max-size=2m : Ukuran maksimum log sebelum log di-roll (digulung). Bilangan bulat positif ditambah modifier yang mewakili satuan ukuran (k, m, atau g).

  • --log-opt max-file=2 : Jumlah maksimum file log yang dapat ada. Jika rolling log menciptakan file berlebih, file tertua akan dihapus. Bilangan bulat positif.

  • --restart : Kebijakan restart yang diterapkan ketika kontainer keluar.

  • --name : Memberikan nama ke kontainer.

Jika Anda ingin memindahkan image ke komputer lain:

  • Export image ke file tar
docker save --output myems-admin.tar myems/myems-admin
  • Salin file tar ke komputer lain, lalu load image dari file tar
docker load --input .\myems-admin.tar

Langkah 4 myems-modbus-tcp

Dalam bagian ini, Anda akan menginstal myems-modbus-tcp di Docker.

  • Salin kode sumber ke direktori root
cp -r myems/myems-modbus-tcp /
cd /myems-modbus-tcp
  • Buat file .env berdasarkan file example.env
Peringatan

Ganti secara manual 127.0.0.1 dengan alamat IP HOST yang sebenarnya.

cp example.env .env
  • Bangun Image dari Kode Sumber
docker build -t myems/myems-modbus-tcp .

Untuk membangun untuk beberapa platform (bukan hanya arsitektur dan sistem operasi yang dijalankan oleh pengguna yang memicu build), Anda dapat menggunakan buildx dan mengatur flag --platform untuk menentukan platform target untuk output build (misalnya, linux/amd64, linux/arm64, atau darwin/amd64).

docker buildx build --platform=linux/amd64 -t myems/myems-modbus-tcp .
  • Jalankan Kontainer Docker (jalankan sebagai superuser)
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 : Menjalankan kontainer di latar belakang dan mencetak ID kontainer

  • -v : Jika Anda menggunakan -v atau --volume untuk bind-mount file atau direktori yang belum ada di host Docker, -v akan membuat endpoint untuk Anda (selalu dibuat sebagai direktori). Opsi ro (jika ada) menyebabkan bind mount dipasang ke kontainer sebagai read-only (hanya baca). Untuk versi v4.7.0 atau lebih lama, gunakan '/code/.env' bukan '/app/.env'.

  • --log-opt max-size=2m : Ukuran maksimum log sebelum log di-roll (digulung). Bilangan bulat positif ditambah modifier yang mewakili satuan ukuran (k, m, atau g).

  • --log-opt max-file=2 : Jumlah maksimum file log yang dapat ada. Jika rolling log menciptakan file berlebih, file tertua akan dihapus. Bilangan bulat positif.

  • --restart : Kebijakan restart yang diterapkan ketika kontainer keluar.

  • --name : Memberikan nama ke kontainer.

Jalur absolut sebelum titik dua adalah jalur di host (bisa bervariasi di sistem Anda). Jalur absolut setelah titik dua adalah jalur di kontainer (TIDAK DAPAT diubah). Dengan meneruskan .env sebagai parameter bind-mount, Anda dapat mengubah nilai konfigurasi nanti. Jika Anda mengubah file .env, restart kontainer untuk membuat perubahan efektif.

  • Memindahkan Kontainer Docker

Untuk memindahkan kontainer ke komputer lain:

  • Export image ke file tar
docker save --output myems-modbus-tcp.tar myems/myems-modbus-tcp
  • Salin file tar ke komputer lain, lalu load image dari file tar
docker load --input .\myems-modbus-tcp.tar

Langkah 5 myems-cleaning

Dalam bagian ini, Anda akan menginstal myems-cleaning di Docker.

  • Salin kode sumber ke direktori root
cp -r myems/myems-cleaning /
cd /myems-cleaning
  • Buat file .env berdasarkan file example.env
Peringatan

Ganti secara manual 127.0.0.1 dengan alamat IP HOST yang sebenarnya.

cp example.env .env
  • Bangun Image dari Kode Sumber
docker build -t myems/myems-cleaning .

Untuk membangun untuk beberapa platform (bukan hanya arsitektur dan sistem operasi yang dijalankan oleh pengguna yang memicu build), Anda dapat menggunakan buildx dan mengatur flag --platform untuk menentukan platform target untuk output build (misalnya, linux/amd64, linux/arm64, atau darwin/amd64).

docker buildx build --platform=linux/amd64 -t myems/myems-cleaning .
  • Jalankan Kontainer Docker (jalankan sebagai superuser)
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 : Menjalankan kontainer di latar belakang dan mencetak ID kontainer

  • -v : Jika Anda menggunakan -v atau --volume untuk bind-mount file atau direktori yang belum ada di host Docker, -v akan membuat endpoint untuk Anda (selalu dibuat sebagai direktori). Opsi ro (jika ada) menyebabkan bind mount dipasang ke kontainer sebagai read-only (hanya baca). Untuk versi v4.7.0 atau lebih lama, gunakan '/code/.env' bukan '/app/.env'.

  • --log-opt max-size=2m : Ukuran maksimum log sebelum log di-roll (digulung). Bilangan bulat positif ditambah modifier yang mewakili satuan ukuran (k, m, atau g).

  • --log-opt max-file=2 : Jumlah maksimum file log yang dapat ada. Jika rolling log menciptakan file berlebih, file tertua akan dihapus. Bilangan bulat positif.

  • --restart : Kebijakan restart yang diterapkan ketika kontainer keluar.

  • --name : Memberikan nama ke kontainer.

Jalur absolut sebelum titik dua adalah jalur di host (bisa bervariasi di sistem Anda). Jalur absolut setelah titik dua adalah jalur di kontainer (TIDAK DAPAT diubah). Dengan meneruskan .env sebagai parameter bind-mount, Anda dapat mengubah nilai konfigurasi nanti. Jika Anda mengubah file .env, restart kontainer untuk membuat perubahan efektif.

  • Memindahkan Kontainer Docker

Untuk memindahkan kontainer ke komputer lain:

  • Export image ke file tar
docker save --output myems-cleaning.tar myems/myems-cleaning
  • Salin file tar ke komputer lain, lalu load image dari file tar
docker load --input .\myems-cleaning.tar

Langkah 6 myems-normalization

Dalam bagian ini, Anda akan menginstal myems-normalization di Docker.

  • Salin kode sumber ke direktori root
cp -r myems/myems-normalization /
cd /myems-normalization
  • Buat file .env berdasarkan file example.env
Peringatan

Ganti secara manual 127.0.0.1 dengan alamat IP HOST yang sebenarnya.

cp example.env .env
  • Bangun Image dari Kode Sumber
docker build -t myems/myems-normalization .

Untuk membangun untuk beberapa platform (bukan hanya arsitektur dan sistem operasi yang dijalankan oleh pengguna yang memicu build), Anda dapat menggunakan buildx dan mengatur flag --platform untuk menentukan platform target untuk output build (misalnya, linux/amd64, linux/arm64, atau darwin/amd64).

docker buildx build --platform=linux/amd64 -t myems/myems-normalization .
  • Jalankan Kontainer Docker (jalankan sebagai superuser)
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 : Menjalankan kontainer di latar belakang dan mencetak ID kontainer

  • -v : Jika Anda menggunakan -v atau --volume untuk bind-mount file atau direktori yang belum ada di host Docker, -v akan membuat endpoint untuk Anda (selalu dibuat sebagai direktori). Opsi ro (jika ada) menyebabkan bind mount dipasang ke kontainer sebagai read-only (hanya baca). Untuk versi v4.7.0 atau lebih lama, gunakan '/code/.env' bukan '/app/.env'.

  • --log-opt max-size=2m : Ukuran maksimum log sebelum log di-roll (digulung). Bilangan bulat positif ditambah modifier yang mewakili satuan ukuran (k, m, atau g).

  • --log-opt max-file=2 : Jumlah maksimum file log yang dapat ada. Jika rolling log menciptakan file berlebih, file tertua akan dihapus. Bilangan bulat positif.

  • --restart : Kebijakan restart yang diterapkan ketika kontainer keluar.

  • --name : Memberikan nama ke kontainer.

Jalur absolut sebelum titik dua adalah jalur di host (bisa bervariasi di sistem Anda). Jalur absolut setelah titik dua adalah jalur di kontainer (TIDAK DAPAT diubah). Dengan meneruskan .env sebagai parameter bind-mount, Anda dapat mengubah nilai konfigurasi nanti. Jika Anda mengubah file .env, restart kontainer untuk membuat perubahan efektif.

  • Memindahkan Kontainer Docker

Untuk memindahkan kontainer ke komputer lain:

  • Export image ke file tar
docker save --output myems-normalization.tar myems/myems-normalization
  • Salin file tar ke komputer lain, lalu load image dari file tar
docker load --input .\myems-normalization.tar

Langkah 7 myems-aggregation

Dalam bagian ini, Anda akan menginstal myems-aggregation di Docker.

  • Salin kode sumber ke direktori root
cp -r myems/myems-aggregation /
cd /myems-aggregation
  • Buat file .env berdasarkan file example.env
cp example.env .env
Peringatan

Ganti secara manual 127.0.0.1 dengan alamat IP HOST yang sebenarnya.

  • Bangun Image dari Kode Sumber
docker build -t myems/myems-aggregation .

Untuk membangun untuk beberapa platform (bukan hanya arsitektur dan sistem operasi yang dijalankan oleh pengguna yang memicu build), Anda dapat menggunakan buildx dan mengatur flag --platform untuk menentukan platform target untuk output build (misalnya, linux/amd64, linux/arm64, atau darwin/amd64).

docker buildx build --platform=linux/amd64 -t myems/myems-aggregation .
  • Jalankan Kontainer Docker (jalankan sebagai superuser)
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 : Menjalankan kontainer di latar belakang dan mencetak ID kontainer

  • -v : Jika Anda menggunakan -v atau --volume untuk bind-mount file atau direktori yang belum ada di host Docker, -v akan membuat endpoint untuk Anda (selalu dibuat sebagai direktori). Opsi ro (jika ada) menyebabkan bind mount dipasang ke kontainer sebagai read-only (hanya baca). Untuk versi v4.7.0 atau lebih lama, gunakan '/code/.env' bukan '/app/.env'.

  • --log-opt max-size=2m : Ukuran maksimum log sebelum log di-roll (digulung). Bilangan bulat positif ditambah modifier yang mewakili satuan ukuran (k, m, atau g).

  • --log-opt max-file=2 : Jumlah maksimum file log yang dapat ada. Jika rolling log menciptakan file berlebih, file tertua akan dihapus. Bilangan bulat positif.

  • --restart : Kebijakan restart yang diterapkan ketika kontainer keluar.

  • --name : Memberikan nama ke kontainer.

Jalur absolut sebelum titik dua adalah jalur di host (bisa bervariasi di sistem Anda). Jalur absolut setelah titik dua adalah jalur di kontainer (TIDAK DAPAT diubah). Dengan meneruskan .env sebagai parameter bind-mount, Anda dapat mengubah nilai konfigurasi nanti. Jika Anda mengubah file .env, restart kontainer untuk membuat perubahan efektif.

  • Memindahkan Kontainer Docker

  • Export image ke file tar

docker save --output myems-aggregation.tar myems/myems-aggregation
  • Salin file tar ke komputer lain, lalu load image dari file tar
docker load --input .\myems-aggregation.tar

Langkah 8 myems-web

Dalam bagian ini, Anda akan menginstal myems-web di Docker.

  • Modifikasi file config.js:
Catatan

Dapatkan mapboxToken di https://mapbox.com lalu atur showOnlineMap ke true. Jika Anda ingin menonaktifkan fitur peta online, atur showOnlineMap ke false.

cd myems/myems-web
nano src/config.js
  • Modifikasi file nginx.conf:
Peringatan

Ganti 127.0.0.1:8000 di nginx.conf dengan IP host aktual dan port myems-api.

cd myems/myems-web
nano nginx.conf
  • Salin kode sumber ke direktori root
cp -r myems/myems-web /
cd /myems-web
Informasi

Anda dapat dengan aman mengabaikan perintah 'npm run build' di bagian ini, karena build sudah terintegrasi ke dalam Dockerfile.

  • Bangun Image dari Kode Sumber
docker build -t myems/myems-web .
docker image prune -f

Untuk membangun untuk beberapa platform (bukan hanya arsitektur dan sistem operasi yang dijalankan oleh pengguna yang memicu build), Anda dapat menggunakan buildx dan mengatur flag --platform untuk menentukan platform target untuk output build (misalnya, linux/amd64, linux/arm64, atau darwin/amd64).

docker buildx build --platform=linux/amd64 -t myems/myems-web .
docker image prune -f
  • Jalankan Kontainer Docker

Di host, bind-mount nginx.conf:

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 : Menjalankan kontainer di latar belakang dan mencetak ID kontainer

  • -p : Mempublikasikan port(s) kontainer ke host, 80:80 (Host:Kontainer) mengikat port 80 (kanan) dari kontainer ke port TCP 80 (kiri) mesin host.

  • -v : Jika Anda menggunakan -v atau --volume untuk bind-mount file atau direktori yang belum ada di host Docker, -v akan membuat endpoint untuk Anda (selalu dibuat sebagai direktori). Opsi ro (jika ada) menyebabkan bind mount dipasang ke kontainer sebagai read-only (hanya baca). Untuk versi v4.7.0 atau lebih lama, gunakan '/code/.env' bukan '/app/.env'.

  • --log-opt max-size=2m : Ukuran maksimum log sebelum log di-roll (digulung). Bilangan bulat positif ditambah modifier yang mewakili satuan ukuran (k, m, atau g).

  • --log-opt max-file=2 : Jumlah maksimum file log yang dapat ada. Jika rolling log menciptakan file berlebih, file tertua akan dihapus. Bilangan bulat positif.

  • --restart : Kebijakan restart yang diterapkan ketika kontainer keluar.

  • --name : Memberikan nama ke kontainer.

Jika Anda ingin memindahkan image ke komputer lain:

  • Export image ke file tar
docker save --output myems-web.tar myems/myems-web
  • Salin file tar ke komputer lain, lalu load image dari file tar
docker load --input .\myems-web.tar

Pasca-instalasi

Selamat! Anda sekarang dapat login ke UI Admin MyEMS dan UI Web MyEMS.

Port Default

MyEMS Web UI: 80

MyEMS API: 8000

MyEMS Admin UI: 8001

Dengan asumsi alamat server adalah 192.168.1.8 (ganti dengan alamat server aktual) Akses MyEMS Web UI di http://192.168.1.8 (port 80 dapat dihilangkan) Akses MyEMS Admin UI di http://192.168.1.8:8001

Kata Sandi Default

MyEMS Admin UI

Nama Pengguna:

administrator

Kata Sandi:

!MyEMS1

MyEMS Web UI

Nama Pengguna:

administrator@myems.io

Kata Sandi:

!MyEMS1

Troubleshooting

Cara mengatasi masalah timeout pull image

Karena masalah jaringan ISP, Anda mungkin mengalami pull image yang lambat. Anda dapat menggunakan layanan akselerasi pihak ketiga.