build(docker): update docker build
This commit is contained in:
5
.env
Normal file
5
.env
Normal file
@@ -0,0 +1,5 @@
|
||||
DOCKER_REPO=git.shmyga.ru
|
||||
DOCKER_GROUP=infernalgames
|
||||
DOCKER_ROOT="$DOCKER_REPO/$DOCKER_GROUP"
|
||||
VERSION=$(grep -m 1 'version' ./pyproject.toml | grep -oP 'version\s*=\s*"\K[^"]+')
|
||||
DOCKER_PROJECTS=("gallery")
|
||||
@@ -3,9 +3,9 @@ ENV POETRY_HOME="/opt/poetry"
|
||||
ENV PATH="$POETRY_HOME/bin:$PATH"
|
||||
WORKDIR /app
|
||||
RUN curl -sSL https://install.python-poetry.org | python3 -
|
||||
COPY pyproject.toml poetry.lock ./
|
||||
COPY pyproject.toml poetry.lock README.md ./
|
||||
RUN poetry config virtualenvs.in-project true
|
||||
RUN poetry install --with app
|
||||
RUN poetry install --with app --no-root
|
||||
|
||||
FROM python:3.12-slim
|
||||
ENV PATH="/app/.venv/bin:$PATH"
|
||||
|
||||
25
docker-compose-develop.yaml
Normal file
25
docker-compose-develop.yaml
Normal file
@@ -0,0 +1,25 @@
|
||||
name: gallery
|
||||
|
||||
services:
|
||||
redis:
|
||||
container_name: gallery-redis
|
||||
image: redis:alpine
|
||||
stop_grace_period: 3s
|
||||
volumes:
|
||||
- redis_data:/data
|
||||
app:
|
||||
container_name: gallery-app-develop
|
||||
build: .
|
||||
environment:
|
||||
- REDIS_HOST=redis
|
||||
- DEBUG=1
|
||||
ports:
|
||||
- 8000:80
|
||||
develop:
|
||||
watch:
|
||||
- action: sync
|
||||
path: ./gallery
|
||||
target: /app/gallery
|
||||
|
||||
volumes:
|
||||
redis_data:
|
||||
@@ -1,3 +1,5 @@
|
||||
name: gallery
|
||||
|
||||
services:
|
||||
redis:
|
||||
container_name: gallery-redis
|
||||
@@ -5,13 +7,13 @@ services:
|
||||
stop_grace_period: 3s
|
||||
volumes:
|
||||
- redis_data:/data
|
||||
command: [ "redis-server", "--bind", "0.0.0.0", "--port", "6379" ]
|
||||
app:
|
||||
container_name: gallery-app
|
||||
build: .
|
||||
# image: shmyga/gallery
|
||||
image: ${DOCKER_ROOT}/gallery
|
||||
environment:
|
||||
- REDIS_HOST=redis
|
||||
depends_on:
|
||||
- redis
|
||||
ports:
|
||||
- 8000:80
|
||||
|
||||
|
||||
2
docker/develop.sh
Executable file
2
docker/develop.sh
Executable file
@@ -0,0 +1,2 @@
|
||||
#!/usr/bin/env bash
|
||||
docker compose -f docker-compose-develop.yaml up --build --watch
|
||||
45
scripts/docker-action
Executable file
45
scripts/docker-action
Executable file
@@ -0,0 +1,45 @@
|
||||
#!/usr/bin/env bash
|
||||
set -e
|
||||
cd "$(dirname $(dirname "$0"))" || exit
|
||||
|
||||
. .env
|
||||
|
||||
build () {
|
||||
echo "build: $1"
|
||||
. "$1/.env"
|
||||
for PROJECT in "${DOCKER_PROJECTS[@]}"; do
|
||||
IFS=: read -r PROJECT_NAME PROJECT_TARGET <<< "$PROJECT"
|
||||
ARGS=("build")
|
||||
for ARG in ${DOCKER_ARGS[@]}; do
|
||||
ARGS+=("--build-arg" "$ARG")
|
||||
done
|
||||
if [ -n "$PROJECT_TARGET" ]; then
|
||||
ARGS+=("--target" "$PROJECT_TARGET")
|
||||
fi
|
||||
ARGS+=("-t" "$DOCKER_GROUP/$PROJECT_NAME" ".")
|
||||
ARGS+=("-f" "$1/Dockerfile")
|
||||
echo "${ARGS[@]}"
|
||||
docker "${ARGS[@]}"
|
||||
done
|
||||
}
|
||||
|
||||
publish () {
|
||||
echo "publish: $1"
|
||||
. "$1/.env"
|
||||
for PROJECT in "${DOCKER_PROJECTS[@]}"; do
|
||||
IFS=: read -r PROJECT_NAME PROJECT_TARGET <<< "$PROJECT"
|
||||
docker tag $DOCKER_GROUP/$PROJECT_NAME $DOCKER_ROOT/$PROJECT_NAME:$VERSION
|
||||
docker tag $DOCKER_GROUP/$PROJECT_NAME $DOCKER_ROOT/$PROJECT_NAME:latest
|
||||
docker push $DOCKER_ROOT/$PROJECT_NAME:$VERSION
|
||||
docker push $DOCKER_ROOT/$PROJECT_NAME:latest
|
||||
done
|
||||
}
|
||||
|
||||
DEFAULT_TARGETS="."
|
||||
TARGETS="${@-$DEFAULT_TARGETS}"
|
||||
|
||||
DOCKER_ACTION="${DOCKER_ACTION-build}"
|
||||
|
||||
for TARGET in $TARGETS; do
|
||||
$DOCKER_ACTION "$TARGET"
|
||||
done
|
||||
Reference in New Issue
Block a user