go to post Dmitry Maslennikov · Jun 4, 2020 InterSystems itself does not have to support access via ssh, it's just a task for OS. Could you have a look at Theia-IDE? This is a web-based alternative for VSCode, and there you already should be able to install extension VSCode-ObjectScript. This can be installed on the server, and you will have access through the web as you trying to do with WebTerminal. Would it work for you, your customers? It may not work so well as it works in VSCode, but, I think we are going to dive into it. VSCode itself developed by Microsoft, and they already offer it online as well, but on their Azure platform. With VSCode right now you can access your servers remotely via the web, where you can use SSL. If your server 2016.2+
go to post Dmitry Maslennikov · Jun 1, 2020 First of all, you should not think, that using docker is the same as you would install it natively. You have to build your own per-project environment with docker. Where to find information Here in Community, you can find many articles related to using Docker with InterSystems products, you can find them by tag Docker. You can look at my articles, Containerization Caché, part2 Learning InterSystems has a course about using Docker, worth to look Many videos on InterSystems Developers Community youtube channel, from global summits, webinars In addition, you would need a code editor, and you can use cross-platform VSCode with extension VSCode-ObjectScript. Brief info about how to install and configure it on Learning.
go to post Dmitry Maslennikov · May 24, 2020 In the context of complex docker images, one more feature worth to be mentioned. It is multi-stage builds. It makes sense when you have to do some build something in your project, but you don't need any immediate files, for instance, source code, or any temporary files. Or some part of your app written in the compilable language, like go, and you can't compile it let's say it on IRIS image. You can first run go image, build it, and then build your final image base on IRIS where you just copy the result from the first stage. In case of IRIS, you can build this way, deployable code. Just build your application from source code, deploy, and copy the result to the fresh image, and it will keep you from the error of letting your source code go with the final image.
go to post Dmitry Maslennikov · May 24, 2020 There is no such way as merging two images. If you need only one image, the only way is to make a new one, which would combine the main from both images. So, you should choose which one is going to be as a base image, I would suggest it supposed to be IRIS. Then you can create install inside nodejs, and your node application. The issue is here you may face is that you will have only one init process after that. While I suppose you have to have started IRIS and NodeJS application at the moment. You can add a script which will run in a background nodejs application, and pass it to iris-main through CMD directive in conjunction with '-a', '-b', '-c' or '-t' parameterSo, it can be something like this FROM intersystestems/iris:2020.2.0.204.0 USER root # script which will run nodejs application in background COPY app-entrypoint.sh / # copy your nodejs application COPY ./nodeapp /opt/nodeapp # install nodejs v10, and node_modules RUN apt-get -y update && \ DEBIAN_FRONTEND=noninteractive apt-get -y install curl --no-install-recommends && \ curl -sL https://deb.nodesource.com/setup_10.x | bash - && \ DEBIAN_FRONTEND=noninteractive apt-get install -y nodejs --no-install-recommends && \ rm -rf /var/lib/apt/lists/* && \ chmod +x /app-entrypoint && \ cd /opt/nodeapp && \ npm install USER ${ISC_PACKAGE_MGRUSER} # say to start your nodejs application after IRIS start CMD ["-a", "/node-entrypoint.sh"]
go to post Dmitry Maslennikov · May 6, 2020 Depends on how you call it, you can just kill that process which runs such query. If you did it in the System Management portal, wait for a connection timeout, or open a new session in another browser or in incognito mode, go to processes, discover your hanging process, and terminate there.
go to post Dmitry Maslennikov · May 5, 2020 As I said for server side it show linux for os/arch. You should find the switcher in context menu in tray on docker icon.
go to post Dmitry Maslennikov · May 5, 2020 I have recently implemented SAML Authentication for one of the projects where I participated, with some SAML providers. I have not tested it with Shibboleth, but with some online providers, including GSuite. It's not so difficult actually and can be solved with SAML classes already implemented in IRIS for SOAP. But this is the only Authentication, while SAML supports also supports provisioning, which I have not Implemented at the moment.
go to post Dmitry Maslennikov · Apr 19, 2020 There two open-source projects isc-tar - it's my library that works the same as tar tool in Linux, and with native support of gzip in InterSystems products you can easily compress files as tar.gz and decompress them. This project used in production as part of Package Manager project. isc_zip - should work with zip files
go to post Dmitry Maslennikov · Apr 11, 2020 Hi Muni,Thanks for the report, it looks like some bug, we'll check it. For future best to report such things as an issues in the repo.
go to post Dmitry Maslennikov · Mar 23, 2020 $listvalid %SYS>w $listvalid($lb("test")) 1 %SYS>w $listvalid("test") 0 %SYS>w $listvalid("") 1 $listbuild is not an object, so, it's not a check as an instance of, it is only possible that variable is valid as $listbuild $listbuild as just a string with a special format, so, that's why this will also return true %SYS>w $listvalid($char(1)) 1 %SYS>write $lb()=$c(1) 1 because %SYS>zzdump $lb() 0000: 01 .
go to post Dmitry Maslennikov · Mar 14, 2020 So, to get own docker-running Cache, is quite easy. You just need docker desktop installed on your mac. Then when it installed, and running. You'll be able to run it from the terminal by command. docker run -d --name cache \ -p 1973:1972 \ -p 57773:57772 \ -v $HOME/cache.key:/usr/cachesys/mgr/cache.key \ daimor/intersystems-cache:2018.1 It supposed that you have valid cache.key in your home directory. And that your ports 1973 and 57773 is free to use. If you would like to change the port just change 1973 and 57773 with any you'd like to use. This command will download the image (daimor/intersystems-cache:2018.1) from the public repository, and run it in the background. You can control the running container by commands, wherein all subsequent commands cache is the name of the container from the docker run command. To see cconsole.log of the container. docker logs cache To look at the status of the container docker ps cache Stop running container docker stop cache This is just an empty instance, to look at how it works. In the real case scenario, some more work should be done. Docker images for Cache or for Ensemble are provided by me, and it is available for different versions. Nowadays is best to migrate to IRIS, and use official images provided by InterSystems itself. And the next step for you would be to use an editor that can be run on macOS, instead of Studio which working only on Windows. And you can use VSCode editor with an extension VSCode-ObjectScript, developed by me. I would recommend reading here articles tagged by Docker. There much more information about how to best use it. As well as about using VSCode. You can contact me directly, if you need any help with establishing development process, with such modern tools as Docker and VSCode. or migrating to IRIS.
go to post Dmitry Maslennikov · Feb 27, 2020 It's great that you trying to do it. But I'm not sure what you actually going to achieve with WebGateway? A provided link has info about running in docker. So, if you just want to activate server-status page in internal apache which goes with IRIS, you should know, that it is not recommended to use internal webserver in production. Some time ago I did an example of Apache with CSPgateway as a docker image. It can be outdated a bit but can be used as an example, how to achieve it. You can easily extend Apache settings there, to allow server-status as well.
go to post Dmitry Maslennikov · Feb 13, 2020 I have a working example on GitHub. There you will find, demo configuration, which will start two instances of IRIS in failover mode, and with arbiter.
go to post Dmitry Maslennikov · Dec 26, 2019 The best solution would be to use docker-compose.yml version: '3.7' services: service1: .... service2: ... And each service in such configuration will be able to contact any other service by his name.
go to post Dmitry Maslennikov · Dec 11, 2019 How is it related to Cache? Your files currently stored as data in Cache database or stored as files on your Linux server? How are you going to use your files stored in SharePoint when you will move it?
go to post Dmitry Maslennikov · Dec 5, 2019 The very recent version of IRIS available only as a Docker image, at the moment version 2019.4. The version available for any other platform on the download page is just 2019.1. Look how SMP looks side by side in 2019.1 and 2019.4
go to post Dmitry Maslennikov · Dec 5, 2019 This is actually nothing related to InterSystems at all. You can do something like in this article. Just catch the file on the client-side in Browser, and send this file to the server, where you can save it as would do it for any usual file
go to post Dmitry Maslennikov · Dec 3, 2019 I think, the best way would be to have REST entrypoint, which would redirect also work with WebSockets, while REST api can handle any Authentication issues. As an example, you can look at %API.Atelier.v1 class and method RunDebugger, which redirects control WebSocket.
go to post Dmitry Maslennikov · Dec 2, 2019 Yeah, I forgot about docker. But it is possible to solve this as well. Connect to the instance with SSH in any way offered by Google. cd /opt/ISC sudo vi docker-compose.yml So, you can now add more ports. Save it (:wq))) sudo docker-compose up -d Do not forget to configure firewall rules. You can even add this line, and remove ports block at all, and get access to any future ports without a restart container. network_mode: host