With command line "azk configure", curl tries to download debian2docker.iso, but it performs SSL certificate verification by default, using a "bundle" of Certificate Authority (CA) public keys (CA certs).
When you run a command like ps, service or exec in subfolders of an azk app, the azkfile.json is correctly found and the azk app folder is correctly mapped to azk-agent. However, Docker runs a command that is called to map subfolders in containers when it should call a command to map the folder corresponding to azk app in containers."
In the future, an image of CoreOS with http balancer already installed and configured will be made available. As of this moment, the balancer can be configured with the recipe in private/lib/balancer. However, even a step this simple could be improved with a configuration process via Makefile.
Commands autocompleting in azk lists all azk-* available commands. However many of these are for internal use only, such as azk-image-generate or azk-provision, and should not be listed among autocomplete options.
rbenv (in which this base code was inspired) uses an internal notation in which the prefix sh- is added to commands that must be listed among autocomplete options in order to distinguish them. That may be the best solution for this issue.
I am trying to run tests on my web app that make a request to the api. But if I have a shell open with the api I receive this error:
azk: TypeError: Cannot read property 'PublicPort' of undefined
at /Users/dynaum/.azk/src/manifest/system.js:429:65
at Function.forEach (/Users/dynaum/.azk/node_modules/lodash/dist/lodash.js:3297:15)
at /Users/dynaum/.azk/src/manifest/system.js:427:8
at forOwn (/Users/dynaum/.azk/node_modules/lodash/dist/lodash.js:2105:15)
at Function.forEach (/Users/dynaum/.azk/node_modules/lodash/dist/lodash.js:3302:9)
at System.Object.defineProperty.value [as _dependencies_envs] (/Users/dynaum/.azk/src/manifest/system.js:426:6)
at System.Object.defineProperty.value [as _more_envs] (/Users/dynaum/.azk/src/manifest/system.js:406:11)
at System.<anonymous> (/Users/dynaum/.azk/src/manifest/system.js:165:31)
at eval (eval at <anonymous> (/Users/dynaum/.azk/node_modules/traceur/src/node/traceur.js:24:17), <anonymous>:460:32)
at Object.eval (eval at <anonymous> (/Users/dynaum/.azk/node_modules/traceur/src/node/traceur.js:24:17), <anonymous>:396:23)
From previous event:
at /Users/dynaum/.azk/src/utils/index.js:44:17
at node.js:902:3
>[email protected] install /azk/dynaum-com/node_modules/sqlite3
> node-pre-gyp install --fallback-to-build
node-pre-gyp http GET http://node-sqlite3.s3.amazonaws.com/Release/node_sqlite3-v2.2.0-node-v11-linux-x64.tar.gz
node-pre-gyp http 200 http://node-sqlite3.s3.amazonaws.com/Release/node_sqlite3-v2.2.0-node-v11-linux-x64.tar.gz
node-pre-gyp ERR! UNCAUGHT EXCEPTION
node-pre-gyp ERR! stack Error: EPERM, chown '/azk/dynaum-com/node_modules/sqlite3/lib/node_sqlite3.node'
node-pre-gyp ERR! System Linux 3.2.0-4-amd64
node-pre-gyp ERR!command"node""/azk/dynaum-com/node_modules/sqlite3/node_modules/.bin/node-pre-gyp""install""--fallback-to-build"
node-pre-gyp ERR! cwd /azk/dynaum-com/node_modules/sqlite3
node-pre-gyp ERR! node -v v0.10.28
node-pre-gyp ERR! node-pre-gyp -v v0.2.6
node-pre-gyp ERR! This is a bug in`node-pre-gyp`.
node-pre-gyp ERR! Try to update node-pre-gyp and file an issue if it does not help:
node-pre-gyp ERR!<https://github.com/springmeyer/node-pre-gyp/issues>
npm ERR![email protected] install: `node-pre-gyp install --fallback-to-build`
npm ERR! Exit status 7
npm ERR!
npm ERR! Failed at the [email protected] install script.
npm ERR! This is most likely a problem with the sqlite3 package,
npm ERR! not with npm itself.
npm ERR! Tell the author that this fails on your system:
npm ERR! node-pre-gyp install --fallback-to-build
npm ERR! You can get their info via:
npm ERR! npm owner ls sqlite3
npm ERR! There is likely additional logging output above.
npm ERR! System Linux 3.2.0-4-amd64
npm ERR!command"/usr/local/bin/node""/usr/local/bin/npm""install"
npm ERR! cwd /azk/dynaum-com
npm ERR! node -v v0.10.28
npm ERR! npm -v 1.4.9
npm ERR! code ELIFECYCLE
npm ERR!
npm ERR! Additional logging details can be found in:
npm ERR! /azk/dynaum-com/npm-debug.log
npm ERR! not ok code 0
When a system is run via azk start the command may fail and in this circumstance, it would to be important be able to view the log information about this failure.
Or even in cases where the system is implemented successfully, it would be nice to view the output logs.
As of this moment, you can only point to a docker image as the basis for an image-box. It is important to add support to using an image-box as base to another image-box.
Use of the virtual machine depends on a service file sharing between the host and guest.
We are currently using the https://github.com/nuxlli/spfs, a file server based p9fs protocol, embedded directly in the azk agent.
However this performance far from feasible for consistent use of azk, it is necessary improve the performance of the spfs or find some alternative to this service.
Commands that depend on the azkfile.json file and the azk-agent seek and validate the azkfile.json file twice. First, at the command execution time on the host machine and then on the agent.
As nearly all azk commands must be executed within a azk-application folder, removing the first validation can improve the performance of these commands.
- Scale.........system `zeus` from 0 to 1 instances...
- Checking......image `dynaum/ruby-bundler-node:latest`...
azk: Error: HTTP code is 500 which indicates error: server error - Cannot start container 657521639af6af82b571bc206aae8a4a3799d77b7929ba30f47a96171d6883d3: open /dev/null: too many open files
at Modem.buildPayload (/Users/dynaum/.azk/node_modules/docker-modem/lib/modem.js:134:15)
at IncomingMessage.<anonymous> (/Users/dynaum/.azk/node_modules/docker-modem/lib/modem.js:111:14)
at IncomingMessage.EventEmitter.emit (events.js:117:20)
at _stream_readable.js:920:16
From previous event:
at Container._.each.newClass.(anonymous function) [as start] (/Users/dynaum/.azk/src/utils/index.js:78:39)
at Docker.<anonymous> (/Users/dynaum/.azk/src/docker/run.js:122:20)
at eval (eval at <anonymous> (/Users/dynaum/.azk/node_modules/traceur/src/node/traceur.js:24:17), <anonymous>:460:32)
at Object.eval (eval at <anonymous> (/Users/dynaum/.azk/node_modules/traceur/src/node/traceur.js:24:17), <anonymous>:396:23)
Imagine I have a Dockerfile file used to build my production environment. I would like to use that Dockerfile as a base box in my azkfile.json and add my development dependencies. Something like this:
Some times this error occurs when I try to run a shell command:
azk: Error: HTTP code is 500 which indicates error: server error - Cannot start container 595fe29500f6a2e83990634f5bde2090afc4f59d958aa4f83ac93ed8d19bc4b6: lstat /home/docker/files: stale NFS file handle
at Modem.buildPayload (/Users/dynaum/.azk/node_modules/docker-modem/lib/modem.js:134:15)
at IncomingMessage.<anonymous> (/Users/dynaum/.azk/node_modules/docker-modem/lib/modem.js:111:14)
at IncomingMessage.EventEmitter.emit (events.js:117:20)
at _stream_readable.js:920:16
From previous event:
at Container._.each.newClass.(anonymous function) [as start] (/Users/dynaum/.azk/src/utils/index.js:78:39)
at Docker.<anonymous> (/Users/dynaum/.azk/src/docker/run.js:122:20)
at eval (eval at <anonymous> (/Users/dynaum/.azk/node_modules/traceur/src/node/traceur.js:24:17), <anonymous>:460:32)
at Object.eval (eval at <anonymous> (/Users/dynaum/.azk/node_modules/traceur/src/node/traceur.js:24:17), <anonymous>:396:23)
As of this moment, you can only set "github repository" in the box option. However, there should be support to more options, like a relative path or other git server repositories.
See below an example of how the syntax for this could to be:
Today if any error occurs in the execution of any command within the system of containers, the containers can happen to continue running and the user is left with no option to kill the process.
A kill command to accept as parameter the azk pid would be an option to force the kill of process.
This command must respect the --no-remove passed when creating the container.
I'm trying to create a sample azk file from a repo that do not have an app. Is just a Docker image repo. But I can't do it.
Error:
azk: TypeError: Cannot call method 'match' of undefined
at Object.hash_key (/Users/dynaum/.azk/src/generator/index.js:71:14)
at Object.eval (eval at <anonymous> (/Users/dynaum/.azk/node_modules/handlebars/dist/cjs/handlebars/compiler/javascript-compiler.js:181:23), <anonymous>:3:94)
at prog (/Users/dynaum/.azk/node_modules/handlebars/dist/cjs/handlebars/runtime.js:137:15)
at Object.<anonymous> (/Users/dynaum/.azk/node_modules/handlebars/dist/cjs/handlebars/base.js:133:23)
at Object.eval (eval at <anonymous> (/Users/dynaum/.azk/node_modules/handlebars/dist/cjs/handlebars/compiler/javascript-compiler.js:181:23), <anonymous>:3:25)
at Object.ret (/Users/dynaum/.azk/node_modules/handlebars/dist/cjs/handlebars/runtime.js:106:30)
at Object.ret [as _tpl] (/Users/dynaum/.azk/node_modules/handlebars/dist/cjs/handlebars/compiler/compiler.js:459:21)
at Object.generator.render (/Users/dynaum/.azk/src/generator/index.js:60:32)
at Cmd.action (/Users/dynaum/.azk/src/cmds/init.js:17:14)
at Cmd.run (/Users/dynaum/.azk/src/cli/command.js:200:16)
At the moment the class "System" this very monolithic, it made a lot of responsibility to stay grouped in one place and become difficult to maintain that part of the code, a refactor would be important.
When commands start or scale are executed quickly return warning that the instances were created, but this does not guarantee that the system is already ready to use.
It would be important awaits the availability of instances before giving them as initialized. And just in case of a failure to show the error before finalizing.
Today to store information about "AZK" in one container, a labels and values system is being used (by concatenating the name of the container). But this system makes it difficult to retrieve this information.
Ideally a system of notes on container would be ideal, but as it is not yet supported by Docker, alternative and improve this system of labels and add a step serialization and deserialization to create and retrieve information from the container.
Under the hood the azk makes use of the Docker management as containers system, for users who have mastered the use of the Docker power, the run Docker through 'azk' would be a great gain functionality.
For this the 'azuki docker' command could be implemented, and the principle the best way to do this is by making an alias for the command 'ssh vm azk "docker *"'
$ azk exec uname
buffer.js:425
throw new RangeError('index out of range');
^
RangeError: index out of range
at checkOffset (buffer.js:425:11)
at Buffer.readUInt32BE (buffer.js:494:5)
at IncomingMessage.<anonymous> (/Users/lucasfais/.azk/node_modules/docker-modem/lib/modem.js:154:40)
at IncomingMessage.EventEmitter.emit (events.js:101:17)
at emitReadable_ (_stream_readable.js:418:10)
at emitReadable (_stream_readable.js:412:7)
at onEofChunk (_stream_readable.js:395:3)
at readableAddChunk (_stream_readable.js:139:7)
at IncomingMessage.Readable.push (_stream_readable.js:123:10)
at HTTPParser.parserOnMessageComplete (_http_common.js:154:14)
at Socket.socketOnEnd (_http_client.js:264:12)
at Socket.EventEmitter.emit (events.js:126:20)
at _stream_readable.js:896:16
at process._tickCallback (node.js:664:11)
Now azk require a virtual machine to provision and execute application. But in Linux it would not be necessary, instead of a virtual machine can use the system directly containers, which makes the azk faster on Linux.
To support this it is necessary to revise the agent and the use of the virtual machine.
The call to command start not show any information that provisioning the application is being executed, giving the idea that this start process is slow.
Também não há nenhuma opção de "forçar provisioning" para um sistema onde o provisionamento já foi executado.