Jika anda mendeploy aplikasi Ghost CMS dalam Docker Swarm, maka anda mungkin akan mengalami permasalah yang sebenarnya tidak fatal, tetapi sangat mengganggu, yaitu munculnya error 500 read ECONNRESET seperti di bawah ini :
500
select count(distinct posts.id) as aggregate from `posts` where (`posts`.`status` = 'published' and `posts`.`type` = 'post') - read ECONNRESET
Error ini biasanya terjadi jika Ghost CMS idle (tidak ada yang mengakses) dalam rentang waktu tertentu. Error di atas sebenarnya akan hilang jika pengguna merefresh halaman tersebut, misalkan dengan menekan tombol F5, akan tetapi tentu saja hal ini sangat merugikan untuk pengalaman pengguna.
Ada beberapa solusi yang bisa dicoba untuk mengatasi permasalah di atas, yang pertama adalah dengan secara periodik (misalkan dalam beberapa detik sekali) mengakses halaman Ghost CMS anda. Hal ini untuk mencegah Ghost CMS idle. Solusi ini memang kurang elegan, tetapi working dan bisa dicoba. Solusi kedua adalah dengan mengubah setting minimal pool dari Ghost CMS menjadi 0. Seperti pada contoh setting docker-compose.yml di bawah ini.
version: '3.1' volumes: mysql-volume: ghost-volume: services: mysql: image: mysql:5.7 volumes: - mysql-volume:/var/lib/mysql environment: MYSQL_ROOT_PASSWORD: root MYSQL_DATABASE: db MYSQL_USER: blog-user MYSQL_PASSWORD: supersecret ghost: image: ghost:3-alpine volumes: - ghost-volume:/var/lib/ghost/content restart: always ports: - 2368:2368 environment: url: https://dxs-uiux.dev.siap.id database__client: mysql database__connection__host: mysql database__connection__user: blog-user database__connection__password: supersecret database__connection__database: db database__pool__min: 0 depends_on: - mysql
Seperti pada contoh file docker-compose.yml di atas, silahkan tambahkan setting database__pool__min: 0 pada service ghost anda.
Setelah itu, silahkan deploy ulang atau update service anda. Jika semuanya lancar, maka Ghost CMS anda akan dapat berjalan normal meskipun sering idle dalam waktu yang lama.
Sekian dan selamat mencoba.