Skip to content

Commit c2fa6ed

Browse files
committed
workerd docker container
1 parent 1cb8c62 commit c2fa6ed

File tree

5 files changed

+53
-8
lines changed

5 files changed

+53
-8
lines changed

flake.nix

Lines changed: 33 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -34,13 +34,10 @@
3434
pkgs.mkShell {
3535
name = "my-dev-environment";
3636
buildInputs = with pkgs; [
37-
efm-langserver
38-
nil
3937
nodejs_latest
4038
nodePackages_latest.typescript-language-server
4139
nodePackages_latest.prettier
4240
vscode-langservers-extracted
43-
nodePackages_latest.bash-language-server
4441
];
4542
# You can add shell hooks or environment variables here too
4643
# shellHook = ''
@@ -53,14 +50,44 @@
5350
devShells = devShell;
5451

5552
packages = forAllSystems (pkgs: {
53+
dockerImage = pkgs.dockerTools.buildImage {
54+
name = "cf-workers-telegram-bot";
55+
tag = "latest";
56+
fromImage = pkgs.dockerTools.pullImage {
57+
imageName = "jacoblincool/workerd";
58+
imageDigest = "sha256:9ef73cacee85040a3c742b22ca0b8ee527d20465af58d4408f024cec1caf347c";
59+
sha256 = "sha256-7Ee5kG8qvGIzk3uyE/35fojl/qbsBvuBquJBWZGIqvA=";
60+
};
61+
copyToRoot = pkgs.buildEnv {
62+
name = "image-root";
63+
paths = [
64+
(pkgs.stdenv.mkDerivation {
65+
name = "docker-root";
66+
buildCommand = ''
67+
mkdir -p $out/worker
68+
cp ${./worker.capnp} $out/worker/worker.capnp
69+
cp -r ${self.packages.${pkgs.system}.default}/* $out/
70+
'';
71+
})
72+
];
73+
};
74+
config = {
75+
Cmd = [
76+
"/workerd"
77+
"serve"
78+
"/worker/worker.capnp"
79+
];
80+
WorkingDir = "/";
81+
};
82+
};
5683
default = pkgs.buildNpmPackage {
5784
name = "cf-workers-telegram-bot";
5885
src = ./.;
5986
npmDepsHash = "sha256-tlxWjtGMnTTMS4or/hZuWEoe+DI6eZRHbOKLsXx/LIY=";
6087
installPhase = ''
6188
runHook preInstall
62-
mkdir -p $out
63-
cp -r dist/* $out/
89+
mkdir -p $out/worker
90+
cp -r dist/* $out/worker
6491
runHook postInstall
6592
'';
6693
};
@@ -71,7 +98,7 @@
7198
type = "app";
7299
program = "${pkgs.writeScriptBin "run-worker" ''
73100
#!/bin/sh
74-
${pkgs.nodejs_latest}/bin/node ${self.packages.${pkgs.system}.default}/worker.js "$@"
101+
workerd serve ${self.packages.${pkgs.system}.default}/worker.mjs "$@"
75102
''}/bin/run-worker";
76103
};
77104
});

packages/worker/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
"module": "./dist/worker.mjs",
88
"type": "module",
99
"scripts": {
10-
"build": "esbuild ./src/worker.ts --bundle --outfile=../../dist/worker.js --platform=neutral --format=esm",
10+
"build": "esbuild ./src/index.ts --bundle --outfile=../../dist/index.js --platform=neutral --format=esm",
1111
"lint": "eslint src",
1212
"test": "vitest --config vitest.config.js"
1313
},

worker.capnp

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
using Workerd = import "/workerd/workerd.capnp";
2+
3+
const config :Workerd.Config = (
4+
services = [
5+
(name = "main", worker = .worker),
6+
],
7+
sockets = [
8+
(service = "main", name = "http", address = "*:8080", http = ()),
9+
]
10+
);
11+
12+
const worker :Workerd.Worker = (
13+
modules = [
14+
(name = "worker", esModule = embed "index.js"),
15+
],
16+
compatibilityDate = "2024-11-11",
17+
);
18+

wrangler.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
name = "cf-workers-telegram-bot-v2"
2-
main = "packages/worker/src/worker.ts"
2+
main = "packages/worker/src/index.ts"
33

44
workers_dev = true
55
compatibility_date = "2024-11-11"

0 commit comments

Comments
 (0)