Skip to content

Commit 00f4855

Browse files
committed
feat: use devconatiner
1 parent 68a425b commit 00f4855

25 files changed

+520
-119
lines changed

.devcontainer/Dockerfile

+57
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,57 @@
1+
FROM mcr.microsoft.com/devcontainers/base:jammy
2+
3+
# Combine installation steps for Nginx and Go to avoid repetitive update/cleanup commands
4+
RUN apt-get update && \
5+
apt-get install -y --no-install-recommends curl gnupg2 ca-certificates lsb-release ubuntu-keyring jq && \
6+
\
7+
# Configure the Nginx repository
8+
curl https://nginx.org/keys/nginx_signing.key | gpg --dearmor > /usr/share/keyrings/nginx-archive-keyring.gpg && \
9+
echo "deb [signed-by=/usr/share/keyrings/nginx-archive-keyring.gpg] http://nginx.org/packages/mainline/ubuntu $(lsb_release -cs) nginx" \
10+
> /etc/apt/sources.list.d/nginx.list && \
11+
printf "Package: *\nPin: origin nginx.org\nPin: release o=nginx\nPin-Priority: 900\n" \
12+
> /etc/apt/preferences.d/99nginx && \
13+
\
14+
# Update package information and install Nginx
15+
apt-get update && \
16+
apt-get install -y --no-install-recommends nginx && \
17+
\
18+
# Install the latest Node.js via NodeSource setup script
19+
curl -fsSL https://deb.nodesource.com/setup_current.x | bash - && \
20+
apt-get update && \
21+
apt-get install -y nodejs && \
22+
\
23+
# Install pnpm globally using npm
24+
npm install -g pnpm && \
25+
\
26+
# Automatically retrieve the latest stable Go version and install it,
27+
# download the appropriate binary based on system architecture (amd64 or arm64)
28+
GO_VERSION=$(curl -sSL "https://golang.org/dl/?mode=json" | \
29+
jq -r 'map(select(.stable)) | .[0].version' | sed 's/^go//') && \
30+
ARCH=$(dpkg --print-architecture) && \
31+
if [ "$ARCH" = "arm64" ]; then \
32+
GO_ARCH=linux-arm64; \
33+
else \
34+
GO_ARCH=linux-amd64; \
35+
fi && \
36+
echo "Installing Go version: ${GO_VERSION} for architecture: ${GO_ARCH}" && \
37+
curl -sSL "https://golang.org/dl/go${GO_VERSION}.${GO_ARCH}.tar.gz" -o go.tar.gz && \
38+
rm -rf /usr/local/go && \
39+
tar -C /usr/local -xzf go.tar.gz && \
40+
rm go.tar.gz && \
41+
\
42+
# Remove jq and clean up to reduce image size
43+
apt-get remove -y jq && \
44+
apt-get autoremove -y && \
45+
apt-get clean && \
46+
rm -rf /var/lib/apt/lists/*
47+
48+
RUN cp -rp /etc/nginx /etc/nginx.orig
49+
50+
# Set PATH to include Go installation and default go install binary location
51+
ENV PATH="/usr/local/go/bin:/root/go/bin:${PATH}"
52+
53+
# Install air with go install (requires Go 1.23 or higher)
54+
RUN go install github.com/air-verse/air@latest
55+
56+
# set zsh as default shell
57+
RUN chsh -s $(which zsh)

.devcontainer/devcontainer.json

+42
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
// For format details, see https://aka.ms/devcontainer.json. For config options, see the
2+
// README at: https://github.com/devcontainers/templates/tree/main/src/ubuntu
3+
{
4+
"name": "Ubuntu",
5+
"dockerComposeFile": "docker-compose.yml",
6+
"service": "nginx-ui",
7+
"workspaceFolder": "/workspaces/${localWorkspaceFolderBasename}",
8+
"shutdownAction": "stopCompose",
9+
// Features to add to the dev container. More info: https://containers.dev/features.
10+
"features": {
11+
"ghcr.io/devcontainers/features/common-utils:2": {
12+
"installOhMyZsh": true
13+
}
14+
},
15+
16+
// Use 'forwardPorts' to make a list of ports inside the container available locally.
17+
// "forwardPorts": [],
18+
19+
// Use 'postCreateCommand' to run commands after the container is created.
20+
// "postCreateCommand": "",
21+
22+
// Configure tool-specific properties.
23+
"customizations": {
24+
"vscode": {
25+
"extensions": [
26+
"antfu.iconify",
27+
"antfu.unocss",
28+
"github.copilot",
29+
"golang.go",
30+
"vue.volar"
31+
]
32+
}
33+
},
34+
35+
// Uncomment to connect as root instead. More info: https://aka.ms/dev-containers-non-root.
36+
"remoteUser": "root",
37+
"overrideCommand": false,
38+
"postStartCommand": "./.devcontainer/start.sh",
39+
"mounts": [
40+
"source=${localEnv:HOME}/.ssh,target=/root/.ssh,type=bind,consistency=cached"
41+
]
42+
}

.devcontainer/docker-compose.yml

+41
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
services:
2+
nginx-ui:
3+
build: .
4+
volumes:
5+
- ../..:/workspaces:cached
6+
- ./go-path:/root/go
7+
- ./nginx:/etc/nginx
8+
command: sleep infinity
9+
environment:
10+
- NGINX_UI_CERT_CA_DIR=https://pebble:14000/dir
11+
networks:
12+
nginxui:
13+
pebble:
14+
image: ghcr.io/letsencrypt/pebble:latest
15+
volumes:
16+
- ./pebble-test:/test
17+
command: -config /test/config/pebble-config.json -strict -dnsserver challtestsrv:8053
18+
ports:
19+
- 14000:14000 # HTTPS ACME API
20+
- 15000:15000 # HTTPS Management API
21+
environment:
22+
- PEBBLE_VA_NOSLEEP=1
23+
- PEBBLE_VA_ALWAYS_VALID=1
24+
networks:
25+
nginxui:
26+
challtestsrv:
27+
image: ghcr.io/letsencrypt/pebble-challtestsrv:latest
28+
command: -defaultIPv6 "" -defaultIPv4 challtestsrv
29+
ports:
30+
- 8055:8055 # HTTP Management API
31+
networks:
32+
nginxui:
33+
casdoor:
34+
image: casbin/casdoor-all-in-one
35+
ports:
36+
- 8001:8000
37+
networks:
38+
- nginxui
39+
40+
networks:
41+
nginxui:
+25
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
# certs/
2+
3+
This directory contains a CA certificate (`pebble.minica.pem`) and a private key
4+
(`pebble.minica.key.pem`) that are used to issue a end-entity certificate (See
5+
`certs/localhost`) for the Pebble HTTPS server.
6+
7+
To get your **testing code** to use Pebble without HTTPS errors you should
8+
configure your ACME client to trust the `pebble.minica.pem` CA certificate. Your
9+
ACME client should offer a runtime option to specify a list of root CAs that you
10+
can configure to include the `pebble.minica.pem` file.
11+
12+
**Do not** add this CA certificate to the system trust store or in production
13+
code!!! The CA's private key is **public** and anyone can use it to issue
14+
certificates that will be trusted by a system with the Pebble CA in the trust
15+
store.
16+
17+
To re-create all of the Pebble certificates run:
18+
19+
minica -ca-cert pebble.minica.pem \
20+
-ca-key pebble.minica.key.pem \
21+
-domains localhost,pebble \
22+
-ip-addresses 127.0.0.1
23+
24+
From the `test/certs/` directory after [installing
25+
MiniCA](https://github.com/jsha/minica#installation)
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
# certs/localhost
2+
3+
This directory contains an end-entity (leaf) certificate (`cert.pem`) and
4+
a private key (`key.pem`) for the Pebble HTTPS server. It includes `127.0.0.1`
5+
as an IP address SAN, and `[localhost, pebble]` as DNS SANs.
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
-----BEGIN CERTIFICATE-----
2+
MIIDGzCCAgOgAwIBAgIIbEfayDFsBtwwDQYJKoZIhvcNAQELBQAwIDEeMBwGA1UE
3+
AxMVbWluaWNhIHJvb3QgY2EgMjRlMmRiMCAXDTE3MTIwNjE5NDIxMFoYDzIxMDcx
4+
MjA2MTk0MjEwWjAUMRIwEAYDVQQDEwlsb2NhbGhvc3QwggEiMA0GCSqGSIb3DQEB
5+
AQUAA4IBDwAwggEKAoIBAQCbFMW3DXXdErvQf2lCZ0qz0DGEWadDoF0O2neM5mVa
6+
VQ7QGW0xc5Qwvn3Tl62C0JtwLpF0pG2BICIN+DHdVaIUwkf77iBS2doH1I3waE1I
7+
8GkV9JrYmFY+j0dA1SwBmqUZNXhLNwZGq1a91nFSI59DZNy/JciqxoPX2K++ojU2
8+
FPpuXe2t51NmXMsszpa+TDqF/IeskA9A/ws6UIh4Mzhghx7oay2/qqj2IIPjAmJj
9+
i73kdUvtEry3wmlkBvtVH50+FscS9WmPC5h3lDTk5nbzSAXKuFusotuqy3XTgY5B
10+
PiRAwkZbEY43JNfqenQPHo7mNTt29i+NVVrBsnAa5ovrAgMBAAGjYzBhMA4GA1Ud
11+
DwEB/wQEAwIFoDAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwDAYDVR0T
12+
AQH/BAIwADAiBgNVHREEGzAZgglsb2NhbGhvc3SCBnBlYmJsZYcEfwAAATANBgkq
13+
hkiG9w0BAQsFAAOCAQEAYIkXff8H28KS0KyLHtbbSOGU4sujHHVwiVXSATACsNAE
14+
D0Qa8hdtTQ6AUqA6/n8/u1tk0O4rPE/cTpsM3IJFX9S3rZMRsguBP7BSr1Lq/XAB
15+
7JP/CNHt+Z9aKCKcg11wIX9/B9F7pyKM3TdKgOpqXGV6TMuLjg5PlYWI/07lVGFW
16+
/mSJDRs8bSCFmbRtEqc4lpwlrpz+kTTnX6G7JDLfLWYw/xXVqwFfdengcDTHCc8K
17+
wtgGq/Gu6vcoBxIO3jaca+OIkMfxxXmGrcNdseuUCa3RMZ8Qy03DqGu6Y6XQyK4B
18+
W8zIG6H9SVKkAznM2yfYhW8v2ktcaZ95/OBHY97ZIw==
19+
-----END CERTIFICATE-----
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
-----BEGIN RSA PRIVATE KEY-----
2+
MIIEowIBAAKCAQEAmxTFtw113RK70H9pQmdKs9AxhFmnQ6BdDtp3jOZlWlUO0Blt
3+
MXOUML5905etgtCbcC6RdKRtgSAiDfgx3VWiFMJH++4gUtnaB9SN8GhNSPBpFfSa
4+
2JhWPo9HQNUsAZqlGTV4SzcGRqtWvdZxUiOfQ2TcvyXIqsaD19ivvqI1NhT6bl3t
5+
redTZlzLLM6Wvkw6hfyHrJAPQP8LOlCIeDM4YIce6Gstv6qo9iCD4wJiY4u95HVL
6+
7RK8t8JpZAb7VR+dPhbHEvVpjwuYd5Q05OZ280gFyrhbrKLbqst104GOQT4kQMJG
7+
WxGONyTX6np0Dx6O5jU7dvYvjVVawbJwGuaL6wIDAQABAoIBAGW9W/S6lO+DIcoo
8+
PHL+9sg+tq2gb5ZzN3nOI45BfI6lrMEjXTqLG9ZasovFP2TJ3J/dPTnrwZdr8Et/
9+
357YViwORVFnKLeSCnMGpFPq6YEHj7mCrq+YSURjlRhYgbVPsi52oMOfhrOIJrEG
10+
ZXPAwPRi0Ftqu1omQEqz8qA7JHOkjB2p0i2Xc/uOSJccCmUDMlksRYz8zFe8wHuD
11+
XvUL2k23n2pBZ6wiez6Xjr0wUQ4ESI02x7PmYgA3aqF2Q6ECDwHhjVeQmAuypMF6
12+
IaTjIJkWdZCW96pPaK1t+5nTNZ+Mg7tpJ/PRE4BkJvqcfHEOOl6wAE8gSk5uVApY
13+
ZRKGmGkCgYEAzF9iRXYo7A/UphL11bR0gqxB6qnQl54iLhqS/E6CVNcmwJ2d9pF8
14+
5HTfSo1/lOXT3hGV8gizN2S5RmWBrc9HBZ+dNrVo7FYeeBiHu+opbX1X/C1HC0m1
15+
wJNsyoXeqD1OFc1WbDpHz5iv4IOXzYdOdKiYEcTv5JkqE7jomqBLQk8CgYEAwkG/
16+
rnwr4ThUo/DG5oH+l0LVnHkrJY+BUSI33g3eQ3eM0MSbfJXGT7snh5puJW0oXP7Z
17+
Gw88nK3Vnz2nTPesiwtO2OkUVgrIgWryIvKHaqrYnapZHuM+io30jbZOVaVTMR9c
18+
X/7/d5/evwXuP7p2DIdZKQKKFgROm1XnhNqVgaUCgYBD/ogHbCR5RVsOVciMbRlG
19+
UGEt3YmUp/vfMuAsKUKbT2mJM+dWHVlb+LZBa4pC06QFgfxNJi/aAhzSGvtmBEww
20+
xsXbaceauZwxgJfIIUPfNZCMSdQVIVTi2Smcx6UofBz6i/Jw14MEwlvhamaa7qVf
21+
kqflYYwelga1wRNCPopLaQKBgQCWsZqZKQqBNMm0Q9yIhN+TR+2d7QFjqeePoRPl
22+
1qxNejhq25ojE607vNv1ff9kWUGuoqSZMUC76r6FQba/JoNbefI4otd7x/GzM9uS
23+
8MHMJazU4okwROkHYwgLxxkNp6rZuJJYheB4VDTfyyH/ng5lubmY7rdgTQcNyZ5I
24+
majRYQKBgAMKJ3RlII0qvAfNFZr4Y2bNIq+60Z+Qu2W5xokIHCFNly3W1XDDKGFe
25+
CCPHSvQljinke3P9gPt2HVdXxcnku9VkTti+JygxuLkVg7E0/SWwrWfGsaMJs+84
26+
fK+mTZay2d3v24r9WKEKwLykngYPyZw5+BdWU0E+xx5lGUd3U4gG
27+
-----END RSA PRIVATE KEY-----
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
-----BEGIN RSA PRIVATE KEY-----
2+
MIIEpAIBAAKCAQEAuVoGTaFSWp3Y+N5JC8lOdL8wmWpaM73UaNzhYiqA7ZqijzVk
3+
TTtoQvQFDcUwyXKOdWHONrv1ld3z224Us504jjlbZwI5uoquCOZ2WJbRhmXrRgzk
4+
Fq+/MtoFmPkhtO/DLjjtocgyIirVXN8Yl2APvB5brvRfCm6kktYeecsWfW/O3ikf
5+
gdM7tmocwQiBypiloHOjdd5e2g8cWNw+rqvILSUVNLaLpsi23cxnLqVb424wz9dZ
6+
5dO0REg1gSxtf4N5LSb6iGuAVoFNhzIeKzQ+svDg9x8tx/DGOghJS/jDgmxSY1qo
7+
bTsXhcmWVfat5GJ5PQgLkCSjBBrjeBlOrc4VtQIDAQABAoIBAQCAoRoou6C0ZEDU
8+
DScyN8TrvlcS0LzClaWYFFmRT5/jxOG1cr8l3elwNXpgYQ2Hb6mvim2ajHxVQg/e
9+
oxlYwO4jvWhSJzg63c0DPjS5LAlCNO6+0Wlk2RheSPGDhLlAoPeZ10YKdS1dis5B
10+
Qk4Fl1O0IHlOBCcEzV4GzPOfYDI+X6/f4xY7qz1s+CgoIxjIeiG+1/WpZQpYhobY
11+
7CfSDdYDKtksXi7iQkc5earUAHBqZ1gQTq6e5LVm9AjRzENhMctFgcPs5zOjp2ak
12+
PluixrA8LTAfu9wQzvxDkPl0UarZVxCerw6nlAziILpQ+U6PtoPZj49VpntTc+cq
13+
1qjzkbhBAoGBANElJmFWY2X6LgBpszeqt0ZOSbkFg2bC0wHCJrMlRzUMEn83w9e8
14+
Z2Fqml9eCC5qxJcyxWDVQeoAX6090m0qgP8xNmGdafcVic2cUlrqtkqhhst2OHCO
15+
MCQEB7cdsjiidNNrOgLbQ3i1bYID8BVLf/TDhEbRgvTewDaz6XPdoSIRAoGBAOLg
16+
RuOec5gn50SrVycx8BLFO8AXjXojpZb1Xg26V5miz1IavSfDcgae/699ppSz+UWi
17+
jGMFr/PokY2JxDVs3PyQLu7ahMzyFHr16Agvp5g5kq056XV+uI/HhqLHOWSQ09DS
18+
1Vrj7FOYpKRzge3/AC7ty9Vr35uMiebpm4/CLFVlAoGALnsIJZfSbWaFdLgJCXUa
19+
WDir77/G7T6dMIXanfPJ+IMfVUCqeLa5bxAHEOzP+qjl2giBjzy18nB00warTnGk
20+
y5I/WMBoPW5++sAkGWqSatGtKGi0sGcZUdfHcy3ZXvbT6eyprtrWCuyfUsbXQ5RM
21+
8rPFIQwNA6jBpSak2ohF+FECgYEAn+6IKncNd6pRfnfmdSvf1+uPxkcUJZCxb2xC
22+
xByjGhvKWE+fHkPJwt8c0SIbZuJEC5Gds0RUF/XPfV4roZm/Yo9ldl02lp7kTxXA
23+
XtzxIP8c5d5YM8qD4l8+Csu0Kq9pkeC+JFddxkRpc8A1TIehInPhZ+6mb6mvoMb3
24+
MW0pAX0CgYATT74RYuIYWZvx0TK4ZXIKTw2i6HObLF63Y6UwyPXXdEVie/ToYRNH
25+
JIxE1weVpHvnHZvVD6D3yGk39ZsCIt31VvKpatWXlWBm875MbBc6kuIGsYT+mSSj
26+
y9TXaE89E5zfL27nZe15QLJ+Xw8Io6PMLZ/jtC5TYoEixSZ9J8v6HA==
27+
-----END RSA PRIVATE KEY-----
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
-----BEGIN CERTIFICATE-----
2+
MIIDCTCCAfGgAwIBAgIIJOLbes8sTr4wDQYJKoZIhvcNAQELBQAwIDEeMBwGA1UE
3+
AxMVbWluaWNhIHJvb3QgY2EgMjRlMmRiMCAXDTE3MTIwNjE5NDIxMFoYDzIxMTcx
4+
MjA2MTk0MjEwWjAgMR4wHAYDVQQDExVtaW5pY2Egcm9vdCBjYSAyNGUyZGIwggEi
5+
MA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQC5WgZNoVJandj43kkLyU50vzCZ
6+
alozvdRo3OFiKoDtmqKPNWRNO2hC9AUNxTDJco51Yc42u/WV3fPbbhSznTiOOVtn
7+
Ajm6iq4I5nZYltGGZetGDOQWr78y2gWY+SG078MuOO2hyDIiKtVc3xiXYA+8Hluu
8+
9F8KbqSS1h55yxZ9b87eKR+B0zu2ahzBCIHKmKWgc6N13l7aDxxY3D6uq8gtJRU0
9+
toumyLbdzGcupVvjbjDP11nl07RESDWBLG1/g3ktJvqIa4BWgU2HMh4rND6y8OD3
10+
Hy3H8MY6CElL+MOCbFJjWqhtOxeFyZZV9q3kYnk9CAuQJKMEGuN4GU6tzhW1AgMB
11+
AAGjRTBDMA4GA1UdDwEB/wQEAwIChDAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYB
12+
BQUHAwIwEgYDVR0TAQH/BAgwBgEB/wIBADANBgkqhkiG9w0BAQsFAAOCAQEAF85v
13+
d40HK1ouDAtWeO1PbnWfGEmC5Xa478s9ddOd9Clvp2McYzNlAFfM7kdcj6xeiNhF
14+
WPIfaGAi/QdURSL/6C1KsVDqlFBlTs9zYfh2g0UXGvJtj1maeih7zxFLvet+fqll
15+
xseM4P9EVJaQxwuK/F78YBt0tCNfivC6JNZMgxKF59h0FBpH70ytUSHXdz7FKwix
16+
Mfn3qEb9BXSk0Q3prNV5sOV3vgjEtB4THfDxSz9z3+DepVnW3vbbqwEbkXdk3j82
17+
2muVldgOUgTwK8eT+XdofVdntzU/kzygSAtAQwLJfn51fS1GvEcYGBc1bDryIqmF
18+
p9BI7gVKtWSZYegicA==
19+
-----END CERTIFICATE-----
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
{
2+
"plan": {
3+
"actions": [
4+
"newAccount",
5+
"newOrder",
6+
"fulfillOrder",
7+
"finalizeOrder"
8+
],
9+
"rate": 10,
10+
"runtime": "10s",
11+
"rateDelta": "1/10s"
12+
},
13+
"directoryURL": "https://localhost:14000/dir",
14+
"domainBase": "com",
15+
"challengeStrategy": "random",
16+
"httpOneAddrs": [":5002"],
17+
"tlsAlpnOneAddrs": [":5001"],
18+
"dnsAddrs": [":8053"],
19+
"fakeDNS": "127.0.0.1",
20+
"regKeySize": 2048,
21+
"certKeySize": 2048,
22+
"regEmail": "[email protected]",
23+
"maxRegs": 20,
24+
"maxNamesPerCert": 20,
25+
"dontSaveState": true
26+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
{
2+
"pebble": {
3+
"listenAddress": "0.0.0.0:14000",
4+
"managementListenAddress": "0.0.0.0:15000",
5+
"certificate": "/test/certs/localhost/cert.pem",
6+
"privateKey": "/test/certs/localhost/key.pem",
7+
"httpPort": 5002,
8+
"tlsPort": 5001,
9+
"ocspResponderURL": "",
10+
"retryAfter": {
11+
"authz": 3,
12+
"order": 5
13+
},
14+
"externalAccountBindingRequired": true,
15+
"externalAccountMACKeys": {
16+
"kid-1": "zWNDZM6eQGHWpSRTPal5eIUYFTu7EajVIoguysqZ9wG44nMEtx3MUAsUDkMTQ12W",
17+
"kid-2": "b10lLJs8l1GPIzsLP0s6pMt8O0XVGnfTaCeROxQM0BIt2XrJMDHJZBM5NuQmQJQH",
18+
"kid-3": "HjudV5qnbreN-n9WyFSH-t4HXuEx_XFen45zuxY-G1h6fr74V3cUM_dVlwQZBWmc"
19+
},
20+
"certificateValidityPeriod": 157766400
21+
}
22+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
{
2+
"pebble": {
3+
"listenAddress": "0.0.0.0:14000",
4+
"managementListenAddress": "0.0.0.0:15000",
5+
"certificate": "/test/certs/localhost/cert.pem",
6+
"privateKey": "/test/certs/localhost/key.pem",
7+
"httpPort": 5002,
8+
"tlsPort": 5001,
9+
"ocspResponderURL": "",
10+
"externalAccountBindingRequired": false,
11+
"domainBlocklist": ["blocked-domain.example"],
12+
"retryAfter": {
13+
"authz": 3,
14+
"order": 5
15+
},
16+
"profiles": {
17+
"default": {
18+
"description": "The profile you know and love",
19+
"validityPeriod": 7776000
20+
},
21+
"shortlived": {
22+
"description": "A short-lived cert profile, without actual enforcement",
23+
"validityPeriod": 518400
24+
}
25+
}
26+
}
27+
}

.devcontainer/start.sh

+28
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
#!/bin/bash
2+
3+
# install zsh-autosuggestions
4+
git clone https://github.com/zsh-users/zsh-autosuggestions ~/.oh-my-zsh/custom/plugins/zsh-autosuggestions
5+
6+
if ! grep -q "zsh-autosuggestions" ~/.zshrc; then
7+
# add zsh-autosuggestions to plugins list
8+
sed -i "/^plugins=(/s/)/ zsh-autosuggestions)/" ~/.zshrc
9+
fi
10+
11+
# init nginx config dir
12+
if [ "$(ls -A /etc/nginx)" = "" ]; then
13+
echo "Initialing Nginx config dir"
14+
cp -rp /etc/nginx.orig/* /etc/nginx/
15+
echo "Initialed Nginx config dir"
16+
fi
17+
18+
# install app dependencies
19+
echo "Installing app dependencies"
20+
cd app && pnpm install -f
21+
# Build app
22+
pnpm build
23+
cd ..
24+
25+
# install docs dependencies
26+
echo "Installing docs dependencies"
27+
cd docs && pnpm install -f
28+
cd ..

.dockerignore

+3
Original file line numberDiff line numberDiff line change
@@ -2,3 +2,6 @@
22
app/node_modules
33
.idea
44
tmp
5+
6+
.devcontainer
7+
.vscode

.gitignore

+3-1
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,8 @@ nginx-ui
1212
resources/development/nginx
1313
app/.env
1414
app/.status_hash
15-
casdoor.pub
1615
.idea/deployment.xml
1716
.idea/webServers.xml
17+
.devcontainer/go-path
18+
.devcontainer/nginx
19+
.devcontainer/casdoor.pem

0 commit comments

Comments
 (0)