mirror of
https://github.com/UnlegitDqrk/Potato.git
synced 2025-10-01 22:30:14 +02:00
Docker build - Just for fun (#203)
* Adding files to run in docker * Updating build and run scripts with usage * Updating build and run scripts to check for docker * Fixing commented code * Added docker compose file and added instructions
This commit is contained in:
4
.dockerignore
Normal file
4
.dockerignore
Normal file
@@ -0,0 +1,4 @@
|
||||
# .dockerignore
|
||||
.git
|
||||
README.md
|
||||
LICENSE
|
2
.env
Normal file
2
.env
Normal file
@@ -0,0 +1,2 @@
|
||||
# Change this to --vegan if you want a vegan potato
|
||||
VEGAN="--nonvegan"
|
27
Dockerfile.spud
Normal file
27
Dockerfile.spud
Normal file
@@ -0,0 +1,27 @@
|
||||
########### Phase 1 - Compile ###########
|
||||
FROM maven:3.9.8-eclipse-temurin-8-alpine AS potato-builder
|
||||
|
||||
# Set the working directory and copy src
|
||||
WORKDIR /usr/src/Potato
|
||||
COPY . /usr/src/Potato/
|
||||
|
||||
# Build with Maven
|
||||
RUN mvn clean install;
|
||||
|
||||
########### Phase 2 - Package ###########
|
||||
FROM eclipse-temurin:21
|
||||
|
||||
# Can be overridden with `docker run -e VEGAN="--vegan"`
|
||||
ENV VEGAN=""
|
||||
|
||||
# Make am appropriate user name
|
||||
RUN useradd -u 500 mrpotatohead
|
||||
USER mrpotatohead
|
||||
|
||||
WORKDIR /home/mrpotatohead
|
||||
|
||||
# Cook this potato right every time
|
||||
COPY --from=potato-builder /usr/src/Potato/target /home/mrpotatohead/target
|
||||
|
||||
# Allow user to pass in an argument when running the container
|
||||
CMD ["sh","-c","java -jar target/Potato.jar ${VEGAN}"]
|
24
docker-compose.yaml
Normal file
24
docker-compose.yaml
Normal file
@@ -0,0 +1,24 @@
|
||||
# HOW TO BUILD & RUN THE POTATO IMAGE
|
||||
# 1. Run the potato-build.sh script and pass in an optional tag for the container
|
||||
# e.g. ./potato-build.sh 1.0.0
|
||||
# 1a. Run the potato-run.sh script and pass in an optional prepare type argument
|
||||
# e.g. ./potato-run.sh "--vegan"
|
||||
# 2. You can run using docker compose run
|
||||
# e.g. docker compose run --build potato (Builds image before running)
|
||||
# e.g. docker compose run potato (if you already built it)
|
||||
# e.g. docker compose run potato --rm (removes the container upon exit)
|
||||
# 2a. To pass in an argument, either edit the .env file,
|
||||
# or set a local environment variable: e.g. export VEGAN="--vegan"
|
||||
# 3. You can run using docker compose up.
|
||||
# e.g. docker compose up
|
||||
# 3a. Make sure to clean up containers since compose up doesn't have a --rm option
|
||||
# e.g. docker container rm potato-potato-1
|
||||
|
||||
services:
|
||||
potato:
|
||||
build:
|
||||
context: .
|
||||
dockerfile: ./Dockerfile.spud
|
||||
environment:
|
||||
- VEGAN=${VEGAN}
|
||||
|
34
potato-build.sh
Executable file
34
potato-build.sh
Executable file
@@ -0,0 +1,34 @@
|
||||
#!/bin/bash
|
||||
|
||||
# HOW TO BUILD THE POTATO IMAGE
|
||||
# 1. Run this script and pass in an optional tag for the container
|
||||
# e.g. ./potato-build.sh 1.0.0
|
||||
# 2. Alternatively, you can can run using docker compose
|
||||
# e.g. docker compose run --build potato
|
||||
# 2a. To pass in an argument, either edit the .env file,
|
||||
# or set a local environment variable: e.g. export VEGAN="--vegan"
|
||||
|
||||
# Tag for the built container
|
||||
TAG=latest
|
||||
|
||||
if ! [ -z $1 ]; then
|
||||
if [[ $1 == "-h" || $1 == "?" ]]; then
|
||||
# Print usage
|
||||
echo "Usage: $0 <tag>"
|
||||
echo "Example: $0 1.0.0"
|
||||
exit 0
|
||||
else
|
||||
TAG=$1
|
||||
fi
|
||||
fi
|
||||
|
||||
# Check if Docker is installed
|
||||
if ! [ -x "$(command -v docker)" ]; then
|
||||
echo "You need to install Docker."
|
||||
exit 1
|
||||
else
|
||||
echo "Using tag: '$TAG'"
|
||||
fi
|
||||
|
||||
# Perform the build
|
||||
docker build -t potato:$TAG -f Dockerfile.spud .
|
40
potato-run.sh
Executable file
40
potato-run.sh
Executable file
@@ -0,0 +1,40 @@
|
||||
#!/bin/bash
|
||||
|
||||
# HOW TO RUN THE POTATO IMAGE
|
||||
# 1. Run this script and pass in an optional prepare type argument
|
||||
# e.g. ./potato-run.sh "--vegan"
|
||||
# 2. You can run using docker compose run
|
||||
# e.g. docker compose run --build potato (builds the container before running)
|
||||
# e.g. docker compose run potato (if you already built it)
|
||||
# e.g. docker compose run potato --rm (removes the container upon exit)
|
||||
# 2a. To pass in an argument, either edit the .env file,
|
||||
# or set a local environment variable: e.g. export VEGAN="--vegan"
|
||||
# 3. You can run using docker compose up and passing in the --build arg
|
||||
# e.g. docker compose up --build
|
||||
# 3a. Make sure to clean up containers since compose up doesn't have a --rm option
|
||||
# e.g. docker container rm potato-potato-1
|
||||
|
||||
|
||||
# Preparation type for the built potato container
|
||||
PREPARE_TYPE="--nonvegan"
|
||||
|
||||
if ! [ -z $1 ]; then
|
||||
if [[ $1 == "-h" || $1 == "?" ]]; then
|
||||
# Print usage
|
||||
echo "Usage: $0 <prepare type>"
|
||||
echo "Example: $0 --vegan"
|
||||
exit 0
|
||||
else
|
||||
PREPARE_TYPE=$1
|
||||
fi
|
||||
fi
|
||||
# Check if Docker is installed
|
||||
if ! [ -x "$(command -v docker)" ]; then
|
||||
echo "You need to install Docker."
|
||||
exit 1
|
||||
else
|
||||
echo "Running Potato with argument: \"$PREPARE_TYPE\""
|
||||
fi
|
||||
|
||||
# Perform the build
|
||||
docker run -it --name potato-in-a-container --rm -e VEGAN=${PREPARE_TYPE} potato:latest
|
Reference in New Issue
Block a user