cleanup directory strucutre and fine tune
This commit is contained in:
3
.gitignore
vendored
3
.gitignore
vendored
@@ -1,4 +1,4 @@
|
|||||||
dataDir/*
|
app/dataDir/*
|
||||||
|
|
||||||
# Local .terraform directories
|
# Local .terraform directories
|
||||||
**/.terraform/*
|
**/.terraform/*
|
||||||
@@ -30,3 +30,4 @@ override.tf.json
|
|||||||
# Include tfplan files to ignore the plan output of command: terraform plan -out=tfplan
|
# Include tfplan files to ignore the plan output of command: terraform plan -out=tfplan
|
||||||
# example: *tfplan*
|
# example: *tfplan*
|
||||||
|
|
||||||
|
dumbserver.image.tar
|
||||||
|
|||||||
24
README
24
README
@@ -3,19 +3,35 @@ The Terraform part is on the more "enterprise" side with not only just a public
|
|||||||
|
|
||||||
for the docker imaging look at: https://www.fosstechnix.com/how-to-create-docker-image-for-node-js-application/
|
for the docker imaging look at: https://www.fosstechnix.com/how-to-create-docker-image-for-node-js-application/
|
||||||
The docker image can be built with
|
The docker image can be built with
|
||||||
docker build -t dumbserver .
|
podman build -t dumbserver .
|
||||||
|
|
||||||
the image then can be extracted with
|
the image then can be extracted with
|
||||||
docker image save -o dumbserver.image.tar dumbserver
|
podman image save -o dumbserver.image.tar dumbserver
|
||||||
|
|
||||||
on the target machine it can be imported with
|
on the target machine it can be imported with
|
||||||
docker image load -i dumbserer.image.tar
|
podman image load -i dumbserer.image.tar
|
||||||
|
|
||||||
and running a container with the image id done via:
|
and running a container with the image id done via:
|
||||||
docker run -p 1280:1280 dumbserver
|
podman run --name dumbserver -p 1280:1280 dumbserver
|
||||||
(Port 1280 is what it listens on)
|
(Port 1280 is what it listens on)
|
||||||
|
|
||||||
|
updating the image from a local file (in podman):
|
||||||
|
podman pull oci-archive:/tmp/dumbserver.image.tar
|
||||||
|
then the container needs to be re-created... stop/rm/run
|
||||||
|
|
||||||
At this stage, terraform will create an ssh accessable server (key is in "terraformtest1.ppk") - tutorial used for that: https://medium.com/@hmalgewatta/setting-up-an-aws-ec2-instance-with-ssh-access-using-terraform-c336c812322f
|
At this stage, terraform will create an ssh accessable server (key is in "terraformtest1.ppk") - tutorial used for that: https://medium.com/@hmalgewatta/setting-up-an-aws-ec2-instance-with-ssh-access-using-terraform-c336c812322f
|
||||||
|
|
||||||
As part of the terraform, I copy a script to install docker/podman - and upload the image
|
As part of the terraform, I copy a script to install docker/podman - and upload the image
|
||||||
then I set up the container and start it. that's it.
|
then I set up the container and start it. that's it.
|
||||||
|
|
||||||
|
initialize with
|
||||||
|
terraform init
|
||||||
|
|
||||||
|
then plan
|
||||||
|
terraform plan
|
||||||
|
|
||||||
|
then apply
|
||||||
|
terraform apply
|
||||||
|
|
||||||
|
To read the terraform output into powershell use
|
||||||
|
$Json_Output = (& terraform output -json) | ConvertFrom-Json
|
||||||
|
|||||||
@@ -4,12 +4,15 @@ FROM node:current-slim
|
|||||||
WORKDIR /nodejsapp
|
WORKDIR /nodejsapp
|
||||||
|
|
||||||
# To Install All dependencies
|
# To Install All dependencies
|
||||||
COPY package*.json ./
|
COPY package*.json .
|
||||||
RUN npm install
|
RUN npm install
|
||||||
|
|
||||||
# To copy all application packages
|
# To copy all application packages
|
||||||
COPY . .
|
COPY . .
|
||||||
|
|
||||||
|
# expose the data dir as a volume
|
||||||
|
VOLUME [ "dataDir" ]
|
||||||
|
|
||||||
# Expose port 1280 and Run the server.js file to start node js application
|
# Expose port 1280 and Run the server.js file to start node js application
|
||||||
EXPOSE 1280
|
EXPOSE 1280
|
||||||
CMD [ "node", "dumbserver.js" ]
|
CMD [ "node", "dumbserver.js" ]
|
||||||
9
app/index.html
Normal file
9
app/index.html
Normal file
@@ -0,0 +1,9 @@
|
|||||||
|
<!DOCTYPE html>
|
||||||
|
<html>
|
||||||
|
<head>
|
||||||
|
Dumbserver
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<p>Server version: 2022-09-30_10_21_17</p>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
2
docker/buildimage.cmd
Normal file
2
docker/buildimage.cmd
Normal file
@@ -0,0 +1,2 @@
|
|||||||
|
docker build -t dumbserver ../app/
|
||||||
|
docker image save -o dumbserver.image.tar dumbserver
|
||||||
Binary file not shown.
@@ -1,8 +0,0 @@
|
|||||||
<!doctype html>
|
|
||||||
<html>
|
|
||||||
<head>
|
|
||||||
</head>
|
|
||||||
<body>
|
|
||||||
<p>Hello World!</p>
|
|
||||||
</body>
|
|
||||||
</html>
|
|
||||||
@@ -1,11 +0,0 @@
|
|||||||
#!/bin/bash
|
|
||||||
export DEBIAN_FRONTEND=noninteractive
|
|
||||||
|
|
||||||
apt -y update
|
|
||||||
apt -y upgrade
|
|
||||||
apt -y update
|
|
||||||
apt -y install docker.io
|
|
||||||
|
|
||||||
docker image load -i /tmp/dumbserver.image.tar
|
|
||||||
|
|
||||||
docker run -d -p 1280:1280 dumbserver
|
|
||||||
@@ -44,16 +44,21 @@ resource "aws_instance" "app_server" {
|
|||||||
|
|
||||||
# Uplaod docker image
|
# Uplaod docker image
|
||||||
provisioner "file" {
|
provisioner "file" {
|
||||||
source = "dumbserver.image.tar"
|
source = "../docker/dumbserver.image.tar"
|
||||||
destination = "/tmp/dumbserver.image.tar"
|
destination = "/tmp/dumbserver.image.tar"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
# Upload example data file
|
||||||
|
provisioner "file" {
|
||||||
|
source = "../app/dataDir/data"
|
||||||
|
destination = "/tmp/data"
|
||||||
|
}
|
||||||
|
|
||||||
provisioner "remote-exec" {
|
provisioner "remote-exec" {
|
||||||
inline = [
|
inline = [
|
||||||
"chmod +x /tmp/setupAppServer.sh",
|
"chmod +x /tmp/setupAppServer.sh",
|
||||||
"sudo /tmp/setupAppServer.sh"
|
"sudo /tmp/setupAppServer.sh"
|
||||||
]
|
]
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
25
terraform/setupAppServer.sh
Normal file
25
terraform/setupAppServer.sh
Normal file
@@ -0,0 +1,25 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
export DEBIAN_FRONTEND=noninteractive
|
||||||
|
|
||||||
|
apt -y update
|
||||||
|
apt -y upgrade
|
||||||
|
apt -y update
|
||||||
|
apt -y install podman
|
||||||
|
|
||||||
|
podman image load -i /tmp/dumbserver.image.tar
|
||||||
|
|
||||||
|
# create the directory for the data file and, if not existing (which is the default) copy the example file
|
||||||
|
mkdir -p /var/local/dumbserver
|
||||||
|
if [ ! -f /var/local/dumbserver/data ]; then
|
||||||
|
cp /tmp/data /var/local/dumbserver/
|
||||||
|
fi
|
||||||
|
|
||||||
|
podman run --name dumbserver -d -p 1280:1280 -v /var/local/dumbserver:/nodejsapp/dataDir dumbserver
|
||||||
|
|
||||||
|
# make sure it comes up after reboot...
|
||||||
|
podman generate systemd --new --name dumbserver > /etc/systemd/system/dumbserver-podman.service
|
||||||
|
systemctl daemon-reload
|
||||||
|
systemctl enable dumbserver-podman.service
|
||||||
|
|
||||||
|
# finally, all is set up and after all the updates we want to reboot into the new kernel version
|
||||||
|
shutdown -r 1
|
||||||
Reference in New Issue
Block a user