forked from drtshock/Potato
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Docker build - Just for fun (drtshock#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
- Loading branch information
Showing
6 changed files
with
131 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,4 @@ | ||
# .dockerignore | ||
.git | ||
README.md | ||
LICENSE |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,2 @@ | ||
# Change this to --vegan if you want a vegan potato | ||
VEGAN="--nonvegan" |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -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}"] |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -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} | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -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 . |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -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 |