Skip to content

Commit 30c6a4c

Browse files
committed
Move docker tasks into wg-easy application
Signed-off-by: Evans Mungai <[email protected]>
1 parent dfe10c3 commit 30c6a4c

File tree

5 files changed

+155
-190
lines changed

5 files changed

+155
-190
lines changed

applications/taskfiles/docker.yml

Lines changed: 0 additions & 120 deletions
This file was deleted.

applications/wg-easy/Dockerfile

Lines changed: 0 additions & 68 deletions
This file was deleted.

applications/wg-easy/Taskfile.yaml

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ version: "3"
22

33
includes:
44
utils: ./taskfiles/utils.yml
5-
dev: ./../taskfiles/docker.yml
5+
dev: ./taskfiles/container.yml
66

77
vars:
88
# Application configuration
@@ -31,7 +31,6 @@ vars:
3131
# Docker workflow configuration
3232
IMAGE_NAME: ttl.sh/wg-easy-dev
3333
CONTAINER_NAME: wg-easy-dev
34-
IMAGE_TAG: latest
3534

3635
tasks:
3736
default:
Lines changed: 67 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,67 @@
1+
# Base image for all shared Dockerfiles for taskfiles
2+
# Use this image as base image for app specific docker files
3+
FROM --platform=$BUILDPLATFORM ubuntu:24.04
4+
5+
ARG TARGETOS
6+
ARG TARGETARCH
7+
8+
WORKDIR /tools
9+
10+
# Set environment variables
11+
ENV DEBIAN_FRONTEND=noninteractive \
12+
HOME=/home/devuser
13+
14+
# Install CLI tools
15+
RUN apt-get update && apt-get install -y \
16+
curl \
17+
jq \
18+
yq \
19+
gnupg \
20+
sudo \
21+
22+
# Install Helm
23+
&& curl https://raw.githubusercontent.com/helm/helm/main/scripts/get-helm-3 | bash \
24+
25+
# Install kubectl
26+
&& curl -LO "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/linux/amd64/kubectl" \
27+
&& chmod +x kubectl \
28+
&& mv kubectl /usr/local/bin/ \
29+
30+
# Install Task
31+
&& sh -c "$(curl --location https://taskfile.dev/install.sh)" -- -d -b /usr/local/bin \
32+
33+
# Install Helmfile
34+
&& curl -Ls $(curl -s https://api.github.com/repos/helmfile/helmfile/releases/latest \
35+
| grep "browser_download_url.*linux_amd64.tar.gz" \
36+
| cut -d : -f 2,3 \
37+
| tr -d \") -o helmfile.tar.gz \
38+
&& tar xf helmfile.tar.gz helmfile && rm helmfile.tar.gz \
39+
&& mv helmfile /usr/local/bin/helmfile \
40+
41+
# Install Replicated CLI
42+
&& curl -Ls $(curl -s https://api.github.com/repos/replicatedhq/replicated/releases/latest \
43+
| grep "browser_download_url.*linux_amd64.tar.gz" \
44+
| cut -d : -f 2,3 \
45+
| tr -d \") -o replicated.tar.gz \
46+
&& tar xf replicated.tar.gz replicated && rm replicated.tar.gz \
47+
&& mv replicated /usr/local/bin/replicated \
48+
49+
# Install Google Cloud CLI
50+
&& echo "deb [signed-by=/usr/share/keyrings/cloud.google.gpg] https://packages.cloud.google.com/apt cloud-sdk main" | tee -a /etc/apt/sources.list.d/google-cloud-sdk.list \
51+
&& curl https://packages.cloud.google.com/apt/doc/apt-key.gpg | gpg --dearmor -o /usr/share/keyrings/cloud.google.gpg \
52+
&& apt-get update \
53+
&& apt-get install google-cloud-cli -y \
54+
&& rm -rf /var/lib/apt/lists/*
55+
56+
# Create a non-root user for better security
57+
RUN groupadd -r devuser \
58+
&& useradd -r -g devuser -m -s /bin/bash devuser \
59+
&& echo "devuser ALL=(ALL) NOPASSWD: ALL" > /etc/sudoers.d/devuser
60+
61+
# Set working directory
62+
WORKDIR /app
63+
64+
# Switch to non-root user
65+
USER devuser
66+
67+
CMD ["bash"]
Lines changed: 87 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,87 @@
1+
version: "3"
2+
3+
# Development environment tasks
4+
tasks:
5+
build-image:
6+
desc: Build development Docker image
7+
vars:
8+
IMAGE_NAME: '{{.IMAGE_NAME}}'
9+
IMAGE_TAG: '{{.IMAGE_TAG | default "latest"}}'
10+
CONTAINERFILE: '{{.CONTAINERFILE | default "./container/Containerfile"}}'
11+
BUILD_ARGS: '{{.BUILD_ARGS | default ""}}'
12+
requires:
13+
vars: [IMAGE_NAME, IMAGE_TAG, CONTAINERFILE]
14+
15+
cmds:
16+
- docker build -t {{.IMAGE_NAME}} -f {{.CONTAINERFILE}} .
17+
18+
start:
19+
desc: Start development container in background
20+
silent: true
21+
cmds:
22+
- task: start-implementation
23+
24+
start-implementation:
25+
desc: Start development container in background
26+
silent: true
27+
run: once
28+
internal: true
29+
vars:
30+
IMAGE_NAME: '{{.IMAGE_NAME}}'
31+
CONTAINER_NAME: '{{.CONTAINER_NAME}}'
32+
IMAGE_TAG: '{{.IMAGE_TAG | default "latest"}}'
33+
requires:
34+
vars: [IMAGE_NAME, CONTAINER_NAME]
35+
36+
status:
37+
- docker ps | grep -q "{{.CONTAINER_NAME}}"
38+
cmds:
39+
- |
40+
# Start container with host networking for kubectl port-forward compatibility
41+
CONTAINER_ID=$(docker run --rm --name {{.CONTAINER_NAME}} -d \
42+
-v $(pwd):/workspace \
43+
-e HOME=/home/devuser \
44+
-e USER=devuser \
45+
-w /workspace \
46+
{{.IMAGE_NAME}}:{{.IMAGE_TAG}} bash -c 'trap "exit" TERM; while :; do sleep 0.1; done')
47+
48+
if [ $? -eq 0 ]; then
49+
echo "Development container started successfully with ID: $CONTAINER_ID"
50+
else
51+
echo "Failed to start development container"
52+
exit 1
53+
fi
54+
55+
shell:
56+
desc: Attach to development container shell
57+
silent: true
58+
requires:
59+
vars: [CONTAINER_NAME]
60+
deps:
61+
- start-implementation
62+
cmds:
63+
- echo "Connecting to {{.CONTAINER_NAME}}..."
64+
- docker exec -it {{.CONTAINER_NAME}} /bin/bash
65+
66+
stop:
67+
desc: Stop development container
68+
silent: true
69+
requires:
70+
vars: [CONTAINER_NAME]
71+
cmds:
72+
- |
73+
if docker ps | grep -q "{{.CONTAINER_NAME}}"; then
74+
echo "Stopping {{.CONTAINER_NAME}} development container..."
75+
docker stop {{.CONTAINER_NAME}}
76+
else
77+
echo "Container {{.CONTAINER_NAME}} is not running"
78+
fi
79+
80+
restart:
81+
desc: Restart development container
82+
silent: true
83+
requires:
84+
vars: [CONTAINER_NAME]
85+
cmds:
86+
- task: stop
87+
- task: start

0 commit comments

Comments
 (0)