@@ -17,9 +17,6 @@ jobs:
|
|||||||
- name: Set up Docker Buildx
|
- name: Set up Docker Buildx
|
||||||
uses: docker/setup-buildx-action@v3
|
uses: docker/setup-buildx-action@v3
|
||||||
with:
|
with:
|
||||||
registry: gitea.goroid.io
|
|
||||||
username: danthe
|
|
||||||
password: Secret666
|
|
||||||
version: "lab:latest"
|
version: "lab:latest"
|
||||||
driver: cloud
|
driver: cloud
|
||||||
endpoint: "danthe/default"
|
endpoint: "danthe/default"
|
||||||
|
|||||||
36
Dockerfile
Normal file
36
Dockerfile
Normal file
@@ -0,0 +1,36 @@
|
|||||||
|
# syntax=docker/dockerfile:1
|
||||||
|
|
||||||
|
# Comments are provided throughout this file to help you get started.
|
||||||
|
# If you need more help, visit the Dockerfile reference guide at
|
||||||
|
# https://docs.docker.com/engine/reference/builder/
|
||||||
|
|
||||||
|
ARG NODE_VERSION=21.6.2
|
||||||
|
|
||||||
|
FROM node:${NODE_VERSION}-alpine
|
||||||
|
|
||||||
|
# Use production node environment by default.
|
||||||
|
ENV NODE_ENV production
|
||||||
|
|
||||||
|
|
||||||
|
WORKDIR /usr/src/app
|
||||||
|
|
||||||
|
# Download dependencies as a separate step to take advantage of Docker's caching.
|
||||||
|
# Leverage a cache mount to /root/.npm to speed up subsequent builds.
|
||||||
|
# Leverage a bind mounts to package.json and package-lock.json to avoid having to copy them into
|
||||||
|
# into this layer.
|
||||||
|
RUN --mount=type=bind,source=package.json,target=package.json \
|
||||||
|
--mount=type=bind,source=package-lock.json,target=package-lock.json \
|
||||||
|
--mount=type=cache,target=/root/.npm \
|
||||||
|
npm ci --omit=dev
|
||||||
|
|
||||||
|
# Run the application as a non-root user.
|
||||||
|
USER node
|
||||||
|
|
||||||
|
# Copy the rest of the source files into the image.
|
||||||
|
COPY . .
|
||||||
|
|
||||||
|
# Expose the port that the application listens on.
|
||||||
|
EXPOSE 8080
|
||||||
|
|
||||||
|
# Run the application.
|
||||||
|
CMD node app.js
|
||||||
23
app.js
Normal file
23
app.js
Normal file
@@ -0,0 +1,23 @@
|
|||||||
|
const http = require('http');
|
||||||
|
|
||||||
|
const server = http.createServer((req, res) => {
|
||||||
|
res.writeHead(200, {'Content-Type': 'text/plain'});
|
||||||
|
res.write(`
|
||||||
|
## .
|
||||||
|
## ## ## ==
|
||||||
|
## ## ## ## ## ===
|
||||||
|
/""""""""""""""""\\___/ ===
|
||||||
|
{ / ===-
|
||||||
|
\\______ O __/
|
||||||
|
\\ \\ __/
|
||||||
|
\\____\\_______/
|
||||||
|
|
||||||
|
|
||||||
|
Hello from Docker!
|
||||||
|
`);
|
||||||
|
res.end();
|
||||||
|
});
|
||||||
|
|
||||||
|
server.listen(8080, () => {
|
||||||
|
console.log('Server started!');
|
||||||
|
});
|
||||||
13
package-lock.json
generated
Normal file
13
package-lock.json
generated
Normal file
@@ -0,0 +1,13 @@
|
|||||||
|
{
|
||||||
|
"name": "helloworld-node-demo",
|
||||||
|
"version": "1.0.0",
|
||||||
|
"lockfileVersion": 3,
|
||||||
|
"requires": true,
|
||||||
|
"packages": {
|
||||||
|
"": {
|
||||||
|
"name": "helloworld-node-demo",
|
||||||
|
"version": "1.0.0",
|
||||||
|
"license": "ISC"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
11
package.json
Normal file
11
package.json
Normal file
@@ -0,0 +1,11 @@
|
|||||||
|
{
|
||||||
|
"name": "helloworld-node-demo",
|
||||||
|
"version": "1.0.0",
|
||||||
|
"description": "Hello World for Docker Init",
|
||||||
|
"main": "app.js",
|
||||||
|
"scripts": {
|
||||||
|
"test": "echo \"Error: no test specified\" && exit 1"
|
||||||
|
},
|
||||||
|
"author": "",
|
||||||
|
"license": "ISC"
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user