diff --git a/.github/workflows/docker-flask.yml b/.github/workflows/docker-flask.yml new file mode 100644 index 0000000..3bd1995 --- /dev/null +++ b/.github/workflows/docker-flask.yml @@ -0,0 +1,42 @@ +name: Build and Publish Flask App Docker Image + +on: + push: + branches: + - '**' + +jobs: + build-and-publish: + runs-on: ubuntu-latest + env: + IMAGE_NAME: ${{ github.repository }} + BRANCH_TAG: ${{ github.ref_name }} + steps: + - name: Checkout code + uses: actions/checkout@v4 + + - name: Set up Docker Buildx + uses: docker/setup-buildx-action@v3 + + - name: Log in to GitHub Container Registry + uses: docker/login-action@v3 + with: + registry: ghcr.io + username: ${{ github.actor }} + password: ${{ secrets.GITHUB_TOKEN }} + + - name: Build Docker image + run: | + docker build -t ghcr.io/${{ github.repository }}:${{ env.BRANCH_TAG }} . + + - name: Run container for 10 seconds + run: | + docker run -d --name flask-test -p 5006:5006 ghcr.io/${{ github.repository }}:${{ env.BRANCH_TAG }} + sleep 10 + docker ps | grep flask-test + docker stop flask-test + docker rm flask-test + + - name: Push Docker image to GitHub Package Registry + run: | + docker push ghcr.io/${{ github.repository }}:${{ env.BRANCH_TAG }} diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..394327b --- /dev/null +++ b/Dockerfile @@ -0,0 +1,24 @@ +# Use official Python image +FROM python:3.11-slim + +# Set working directory +WORKDIR /app + +# Copy only necessary files +COPY requirements.txt ./ +COPY rpgserver.py ./ +COPY roomlogic.py ./ +COPY usercommands.py ./ +COPY world.json ./ +COPY endgame.json ./ +COPY templates/ ./templates/ +COPY images/ ./images/ + +# Install dependencies +RUN pip install --no-cache-dir -r requirements.txt + +# Expose Flask port +EXPOSE 5006 + +# Run the Flask app +CMD ["python", "rpgserver.py"] diff --git a/requirements.txt b/requirements.txt new file mode 100644 index 0000000..e3e9a71 --- /dev/null +++ b/requirements.txt @@ -0,0 +1 @@ +Flask