I am currrently using 4 WSO2 modules inside my docker-compose file as shown below:
mysql: image: mysql:5.7.31 container_name: mysql ports: - 3306 environment: MYSQL_ROOT_PASSWORD: root volumes: - ./conf/mysql/scripts:/docker-entrypoint-initdb.d - ./conf/mysql/conf/my.cnf:/etc/mysql/my.cnf ulimits: nofile: soft: 20000 hard: 40000 command: --ssl=0 --max_connections=10000 healthcheck: test: ["CMD", "mysqladmin" ,"ping", "-uroot", "-proot"] interval: 30s timeout: 60s retries: 5 start_period: 80s am-analytics-worker: image: wso2am-analytics-worker:3.2.0 container_name: am-analytics-worker ports: - "9091" - "9444" healthcheck: test: ["CMD", "nc", "-z","localhost", "9444"] interval: 10s start_period: 20s retries: 5 depends_on: mysql: condition: service_healthy volumes: - ./conf/apim-analytics-worker:/home/wso2carbon/wso2-config-volume api-manager: image: wso2am:3.2.0 container_name: api-manager healthcheck: test: ["CMD", "nc", "-z","localhost", "9443"] interval: 10s start_period: 180s retries: 20 depends_on: mysql: condition: service_healthy am-analytics-worker: condition: service_healthy volumes: - ./conf/apim:/home/wso2carbon/wso2-config-volume - ./conf/apim_artifacts:/home/wso2carbon/wso2-artifact-volume ports: - "9443:9443" - "8280:8280" - "8243:8243" am-analytics-dashboard: image: wso2am-analytics-dashboard:3.2.0 container_name: am-analytics-dashboard ports: - "9643:9643" healthcheck: test: ["CMD", "nc", "-z","localhost", "9643"] interval: 10s retries: 5 start_period: 20s depends_on: mysql: condition: service_healthy api-manager: condition: service_healthy volumes: - ./conf/apim-analytics-dashboard:/home/wso2carbon/wso2-config-volume
I have create somed apis in WSO2 Api Manager and the issue is that if my container reboots I loose all my APIs.
So here is what I tried in order to have some data persistence with my apis so that they remain avaible even if the Api Manager container reboots.
First, I copied the whole wso2am-3.2.0 folder from the container to my computer and then based on this link (WSO2 Runtime Artifacts) I have created a folder named "apim_artifacts" and inside I have placed the 4 runtime artifacts (<API-M_HOME>/repository/deployment/server, <API-M_HOME>/repository/tenants, <API-M_HOME>/solr, <API-M_HOME>/repository/database) as suggested by the WSO2 documentation.
Now, when I compose my project the apis are still not visible in the publisher.
But if I go check inside the Api Manager container I can see that all the folders I have mounted with my volume have been copied and mapped into their respective folders (I can even see all my apis inside the /home/wso2carbon/wso2am-3.2.0/repository/deployment/server/synapse-configs/default/endpoints folder).
Am I missing something or is there something I am doing wrong?
Could you please help me out?
Source: Docker Questions