docker-linux
sidebar_position: 4
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
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
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
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
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
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
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:
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:
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
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
Karena masalah jaringan ISP, Anda mungkin mengalami pull image yang lambat. Anda dapat menggunakan layanan akselerasi pihak ketiga.