[IMPROVED] Creación de contenedores y otras correcciones
- Se crea la funcion builder.sh que crea imagenes de contenedores - Se corrige la correcta creación del archivo .gitignore - Se corrigen errores en el archivo dockerfile.local para la correcta construcción de contenedor - Se eliminan las otras plantillas de dockerfile - Otras modificaciones y correcciones menores
This commit is contained in:
parent
ec44843cbc
commit
1909eedcf8
10 changed files with 235 additions and 98 deletions
150
bin/builder.sh
Executable file
150
bin/builder.sh
Executable file
|
@ -0,0 +1,150 @@
|
||||||
|
#!/bin/bash
|
||||||
|
#
|
||||||
|
# builder.sh
|
||||||
|
# Modified: 2024/12/04 14:47:00
|
||||||
|
# Derechos de Autor (C) [2024] [Mauro Rosero P. <mauro@roser.one>]
|
||||||
|
#
|
||||||
|
# Este programa es software libre: usted puede redistribuirlo y/o modificarlo
|
||||||
|
# bajo los términos de la Licencia Pública Affero General de GNU tal como
|
||||||
|
# lo publica la Free Software Foundation, ya sea la versión 3 de la licencia,
|
||||||
|
# o (a su elección) cualquier versión posterior.
|
||||||
|
#
|
||||||
|
# Este programa se distribuye con la esperanza de que sea útil,
|
||||||
|
# pero SIN NINGUNA GARANTÍA; sin siquiera la garantía implícita de
|
||||||
|
# COMERCIABILIDAD o IDONEIDAD PARA UN PROPÓSITO PARTICULAR. Consulte la
|
||||||
|
# Licencia Pública Affero General de GNU para obtener más detalles.
|
||||||
|
#
|
||||||
|
# Debería haber recibido una copia de la Licencia Pública Affero General
|
||||||
|
# junto con este programa. Si no la recibió, consulte <https://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
|
PROGRAM_NAME="BUILDER CONTAINER (DEVSTOOLS)"
|
||||||
|
DEVSPATH=developers
|
||||||
|
DEVSTEAM=odoo
|
||||||
|
BIN_HOME=$HOME/$DEVSPATH/$DEVSTEAM
|
||||||
|
BIN_MESG=bin/msg
|
||||||
|
BIN_LIBS=bin/lib
|
||||||
|
VERSION="$(cat $BIN_HOME/config/project.version)"
|
||||||
|
DATENOW="$(date +"%Y-%m-%d %H:%M:%S")"
|
||||||
|
|
||||||
|
# CHECK SHELL LANGUAGE
|
||||||
|
BIN_LANG=${LANG:0:2}
|
||||||
|
|
||||||
|
# LOAD BASE BASH LIBRARY
|
||||||
|
source $BIN_HOME/$BIN_LIBS/base.lib
|
||||||
|
#baselib_test
|
||||||
|
|
||||||
|
# LOAD CONSOLE BASH LIBRARY
|
||||||
|
source $BIN_HOME/$BIN_LIBS/console.lib
|
||||||
|
APPS_NAME="$(cat $BIN_HOME/$DEVS_NAME)"
|
||||||
|
#consolelib_test
|
||||||
|
|
||||||
|
# LOAD ODOO BASH LIBRARY
|
||||||
|
source $BIN_HOME/$BIN_LIBS/odoo.lib
|
||||||
|
#odoolib_test
|
||||||
|
|
||||||
|
# Load head messages
|
||||||
|
load_messages $BIN_HOME $BIN_MESG $BIN_LANG "head"
|
||||||
|
|
||||||
|
# Load container messages
|
||||||
|
load_messages $BIN_HOME $BIN_MESG $BIN_LANG "container"
|
||||||
|
|
||||||
|
# Load odoo messages
|
||||||
|
load_messages $BIN_HOME $BIN_MESG $BIN_LANG "odoo"
|
||||||
|
|
||||||
|
# Function to display help message
|
||||||
|
function help() {
|
||||||
|
echo "$comsg_003_1 $0 $comsg_003_2"
|
||||||
|
echo "$comsg_004"
|
||||||
|
echo "$comsg_005"
|
||||||
|
echo "$comsg_006"
|
||||||
|
echo "$comsg_007"
|
||||||
|
}
|
||||||
|
|
||||||
|
########### MAIN PROGRAM ###########
|
||||||
|
|
||||||
|
# Display Headers
|
||||||
|
display_text_header $BIN_HOME "${head_000} ${comsg_101}"
|
||||||
|
|
||||||
|
# Check for arguments option
|
||||||
|
help=false
|
||||||
|
version=false
|
||||||
|
while [[ $# -gt 0 ]]; do
|
||||||
|
case $1 in
|
||||||
|
--help)
|
||||||
|
help=true
|
||||||
|
shift
|
||||||
|
;;
|
||||||
|
--version)
|
||||||
|
version=true
|
||||||
|
shift
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
done
|
||||||
|
|
||||||
|
# Check to show help
|
||||||
|
if $help; then
|
||||||
|
help
|
||||||
|
exit 0
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Check to show command version
|
||||||
|
if $version; then
|
||||||
|
echo "$PROGRAM_NAME"
|
||||||
|
echo "$head_version $VERSION"
|
||||||
|
exit 0
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Set project name
|
||||||
|
PROJECT_NAME="$(basename "$PWD")"
|
||||||
|
|
||||||
|
# Check if project path is ok
|
||||||
|
DIR_NAME="$(dirname "$PWD")"
|
||||||
|
if [ "${DIR_NAME}" != "${BIN_HOME}" ]
|
||||||
|
then
|
||||||
|
echo "${head_error}: ${head_noproject}"
|
||||||
|
exit 2
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Check if os is valid!
|
||||||
|
get_osname
|
||||||
|
if [ "${os_name}" == "${head_unknow}" ]
|
||||||
|
then
|
||||||
|
echo "${head_error}: ${head_os_error}"
|
||||||
|
exit 3
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Check if .env file exists
|
||||||
|
if [ ! -f "$PWD/.env" ]
|
||||||
|
then
|
||||||
|
echo "${head_error}: ${head_noenv}"
|
||||||
|
exit 4
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Check if build path exists
|
||||||
|
if [ ! -d "$PWD/$DOCKER_BUILD" ]
|
||||||
|
then
|
||||||
|
echo "${head_error}: ${head_nobuild}"
|
||||||
|
exit 5
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Check if build path exists
|
||||||
|
if [ ! -f "$PWD/$DOCKER_BUILD/$DOCKER_FILE" ]
|
||||||
|
then
|
||||||
|
echo "${head_error}: ${head_nodockerfile}"
|
||||||
|
exit 6
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Build odoo container
|
||||||
|
source "$PWD/.env"
|
||||||
|
CONTAINER="${DEVSTEAM}:${ODOO_CONTAINER}_${ODOO_VERSION}"
|
||||||
|
echo "$head_container ${CONTAINER}"
|
||||||
|
build_container "${CONTAINER}" "${DEVSTEAM}:${ODOO_VERSION}"
|
||||||
|
if [ $? -ne 0 ]
|
||||||
|
then
|
||||||
|
echo "${head_error}: ${head_nobuilded}"
|
||||||
|
exit 10
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo "${head_info}: ${head_builded}"
|
||||||
|
exit 0
|
||||||
|
|
|
@ -18,6 +18,13 @@
|
||||||
# junto con este programa. Si no la recibió, consulte <https://www.gnu.org/licenses/>.
|
# junto con este programa. Si no la recibió, consulte <https://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
DEVS_NAME=config/project.head
|
DEVS_NAME=config/project.head
|
||||||
|
GIT_IGNORE=.gitignore
|
||||||
|
|
||||||
|
DOCKER_LOCAL=dockerfile.local
|
||||||
|
DOCKER_BASE=dockerfile.base
|
||||||
|
DOCKER_SAAS=dockerfile.saas
|
||||||
|
DOCKER_BUILD=build
|
||||||
|
DOCKER_FILE=Dockerfile
|
||||||
|
|
||||||
# Test library
|
# Test library
|
||||||
function baselib_test() {
|
function baselib_test() {
|
||||||
|
@ -235,10 +242,53 @@ function get_osname() {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
function check_server() {
|
function docker_build() {
|
||||||
|
|
||||||
local SERVER=$1
|
local CONTAINER=$1
|
||||||
|
local BASE_IMAGE=$2
|
||||||
|
|
||||||
ping -c 1 $SERVER > /dev/null 2>&1 && return 0 || return 1
|
docker build ./build -t ${CONTAINER} --build-arg BASE_IMAGE=${BASE_IMAGE}
|
||||||
|
return $?
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
function podman_build() {
|
||||||
|
|
||||||
|
local CONTAINER=$1
|
||||||
|
local BASE_IMAGE=$2
|
||||||
|
|
||||||
|
local registry_path=~/.config/containers
|
||||||
|
|
||||||
|
if [ ! -d ${registry_path} ]
|
||||||
|
then
|
||||||
|
mkdir ${registry_path}
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo 'unqualified-search-registries = ["docker.io"]' > "${registry_path}/registries.conf"
|
||||||
|
podman build ./build -t ${CONTAINER} --format docker --build-arg BASE_IMAGE=${BASE_IMAGE}
|
||||||
|
return $?
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
function build_container() {
|
||||||
|
|
||||||
|
local CONTAINER=$1
|
||||||
|
local BASE_IMAGE=$2
|
||||||
|
|
||||||
|
# Verificar si Docker está instalado
|
||||||
|
if command -v docker &> /dev/null
|
||||||
|
then
|
||||||
|
docker_build "$CONTAINER" "$BASE_IMAGE"
|
||||||
|
return $?
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Verificar si Podman está instalado
|
||||||
|
if command -v podman &> /dev/null
|
||||||
|
then
|
||||||
|
podman_build "$CONTAINER" "$BASE_IMAGE"
|
||||||
|
return $?
|
||||||
|
fi
|
||||||
|
|
||||||
|
return 1
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,54 +0,0 @@
|
||||||
#!/bin/bash
|
|
||||||
#bootstrab.lib
|
|
||||||
#
|
|
||||||
# Derechos de Autor (C) [2024] [Mauro Rosero P. <mauro@roser.one>]
|
|
||||||
#
|
|
||||||
# Este programa es software libre: usted puede redistribuirlo y/o modificarlo
|
|
||||||
# bajo los términos de la Licencia Pública Affero General de GNU tal como
|
|
||||||
# lo publica la Free Software Foundation, ya sea la versión 3 de la licencia,
|
|
||||||
# o (a su elección) cualquier versión posterior.
|
|
||||||
#
|
|
||||||
# Este programa se distribuye con la esperanza de que sea útil,
|
|
||||||
# pero SIN NINGUNA GARANTÍA; sin siquiera la garantía implícita de
|
|
||||||
# COMERCIABILIDAD o IDONEIDAD PARA UN PROPÓSITO PARTICULAR. Consulte la
|
|
||||||
# Licencia Pública Affero General de GNU para obtener más detalles.
|
|
||||||
#
|
|
||||||
# Debería haber recibido una copia de la Licencia Pública Affero General
|
|
||||||
# junto con este programa. Si no la recibió, consulte <https://www.gnu.org/licenses/>.
|
|
||||||
|
|
||||||
# Función para iniciar una instancia de odoo en contenedor (podman o docker)
|
|
||||||
start_instance() {
|
|
||||||
local env_file=$1
|
|
||||||
# Verificar si Docker está instalado
|
|
||||||
if command -v docker &> /dev/null; then
|
|
||||||
docker-compose --env-file ${env_file} up -d
|
|
||||||
return $?
|
|
||||||
fi
|
|
||||||
# Verificar si Podman está instalado
|
|
||||||
if command -v podman &> /dev/null; then
|
|
||||||
podman-compose --env-file ${env_file} up -d
|
|
||||||
return $?
|
|
||||||
fi
|
|
||||||
|
|
||||||
echo "\n\nVisite http://localhost:101${odoo_port}"
|
|
||||||
# Ninguno de los dos está instalado
|
|
||||||
return 100
|
|
||||||
}
|
|
||||||
|
|
||||||
# Función para detener una instancia de odoo en contenedor (podman o docker)
|
|
||||||
stop_instance() {
|
|
||||||
local env_file=$1
|
|
||||||
# Verificar si Docker está instalado
|
|
||||||
if command -v docker &> /dev/null; then
|
|
||||||
docker-compose --env-file ${env_file} down
|
|
||||||
return $?
|
|
||||||
fi
|
|
||||||
# Verificar si Podman está instalado
|
|
||||||
if command -v podman &> /dev/null; then
|
|
||||||
podman-compose --env-file ${env_file} down
|
|
||||||
return $?
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Ninguno de los dos está instalado
|
|
||||||
return 100
|
|
||||||
}
|
|
|
@ -17,12 +17,6 @@
|
||||||
# Debería haber recibido una copia de la Licencia Pública Affero General
|
# Debería haber recibido una copia de la Licencia Pública Affero General
|
||||||
# junto con este programa. Si no la recibió, consulte <https://www.gnu.org/licenses/>.
|
# junto con este programa. Si no la recibió, consulte <https://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
DOCKER_LOCAL=dockerfile.local
|
|
||||||
DOCKER_BASE=dockerfile.base
|
|
||||||
DOCKER_SAAS=dockerfile.saas
|
|
||||||
DOCKER_BUILD=build
|
|
||||||
DOCKER_FILE=Dockerfile
|
|
||||||
|
|
||||||
ODOO_APP=apps
|
ODOO_APP=apps
|
||||||
ODOO_DOC=docs
|
ODOO_DOC=docs
|
||||||
ODOO_ETC=etc
|
ODOO_ETC=etc
|
||||||
|
|
22
bin/msg/container.es
Normal file
22
bin/msg/container.es
Normal file
|
@ -0,0 +1,22 @@
|
||||||
|
#!/usr/bin/env bash
|
||||||
|
#bash script : container.es
|
||||||
|
#apps : Podman/Docker Container Developer Utilities
|
||||||
|
#description : Container Translate Messages (es)
|
||||||
|
#author : MRP/mrp - Mauro Rosero P.
|
||||||
|
#company email : mauro@rosero.one
|
||||||
|
#personal email : mauro.rosero@gmail.com
|
||||||
|
#date : 20241130
|
||||||
|
#version : 1.0.2
|
||||||
|
#notes :
|
||||||
|
#==============================================================================
|
||||||
|
#==============================================================================
|
||||||
|
|
||||||
|
|
||||||
|
comsg_003_1="Uso:"
|
||||||
|
comsg_003_2="[--help] [--version]"
|
||||||
|
comsg_004="Descripción: Este script debe estar en la carpeta raíz de su proyecto."
|
||||||
|
comsg_005="Opciones:"
|
||||||
|
comsg_006=" --help Muestra este mensaje de ayuda."
|
||||||
|
comsg_007=" --version Muestra la versión del script."
|
||||||
|
|
||||||
|
comsg_101="BUILD CONTAINER"
|
|
@ -29,7 +29,14 @@ head_fail="Fail"
|
||||||
head_exit="Finalizar"
|
head_exit="Finalizar"
|
||||||
head_create="Adicionar"
|
head_create="Adicionar"
|
||||||
head_delete="Eliminar"
|
head_delete="Eliminar"
|
||||||
|
head_noproject="Esta carpeta no es un proyecto de desarrollo!"
|
||||||
|
head_noenv="Aún no se han configurado los parámetros del ambiente de desarrollo (.env)"
|
||||||
|
head_nobuild="No existe carpeta build para creación de contenedores"
|
||||||
|
head_nodockerfile="No existe el archivo de configuración Dockerfile"
|
||||||
|
head_nobuilded="No se pudo completar la construcción del contenedor"
|
||||||
|
head_builded="Construcción del contenedor completada!"
|
||||||
|
|
||||||
|
head_container="Generando contenedor"
|
||||||
label_email="Correo Electrónico:"
|
label_email="Correo Electrónico:"
|
||||||
|
|
||||||
vldt_001="no puede estar en blanco..."
|
vldt_001="no puede estar en blanco..."
|
||||||
|
|
|
@ -146,7 +146,7 @@ then
|
||||||
if [ $? -eq 0 ]; then
|
if [ $? -eq 0 ]; then
|
||||||
echo "[x] $result"
|
echo "[x] $result"
|
||||||
echo "[x] $git_setbranch: ${ODOO_DEF_BRCH}${ODOO_VERS}"
|
echo "[x] $git_setbranch: ${ODOO_DEF_BRCH}${ODOO_VERS}"
|
||||||
cp -f $BIN_HOME/$ODOO_CFG/$ODOO_CFG_GITI $BIN_HOME/$PROJECT_NAME/
|
cp -f $BIN_HOME/$ODOO_CFG/$ODOO_CFG_GITI $BIN_HOME/$PROJECT_NAME/$GIT_IGNORE
|
||||||
echo "[x] $git_gitignored $ODOO_CFG_GITI"
|
echo "[x] $git_gitignored $ODOO_CFG_GITI"
|
||||||
else
|
else
|
||||||
echo echo "[-] $git_notinitialized"
|
echo echo "[-] $git_notinitialized"
|
||||||
|
|
|
@ -1,15 +0,0 @@
|
||||||
ARG BASE_IMAGE
|
|
||||||
FROM $BASE_IMAGE
|
|
||||||
USER root
|
|
||||||
|
|
||||||
RUN apt-get update && apt upgrade -y
|
|
||||||
RUN apt-get install gcc python3-dev libcups2-dev locales locales-all -y
|
|
||||||
RUN mkdir /backups 2>/dev/null
|
|
||||||
RUN mkdir /data 2>/dev/null
|
|
||||||
|
|
||||||
VOLUME /backups
|
|
||||||
VOLUME /data
|
|
||||||
|
|
||||||
RUN pip3 install python-crontab boto3 odoo-test-helper QifParser
|
|
||||||
RUN pip3 install html2text httpagentparser fuzzywuzzy[speedup] openpyxl xlrd>=1.0.0
|
|
||||||
RUN pip3 install pyncclient pysftp
|
|
|
@ -3,13 +3,11 @@ FROM $BASE_IMAGE
|
||||||
USER root
|
USER root
|
||||||
|
|
||||||
RUN apt-get update && apt upgrade -y
|
RUN apt-get update && apt upgrade -y
|
||||||
RUN apt-get install gcc python3-dev cups libcups2-dev locales locales-all -y
|
RUN apt-get install gcc python3-full python3-dev cups libcups2-dev locales locales-all -y
|
||||||
RUN mkdir /backups 2>/dev/null
|
RUN mkdir /backups 2>/dev/null
|
||||||
RUN mkdir /data 2>/dev/null
|
RUN mkdir /data 2>/dev/null
|
||||||
|
|
||||||
VOLUME /backups
|
VOLUME /backups
|
||||||
VOLUME /data
|
VOLUME /data
|
||||||
|
|
||||||
RUN pip3 install python-crontab boto3 pycups odoo-test-helper openai QifParser
|
RUN pip3 install --break-system-packages python-crontab html2text dropbox pysftp pyncclient openpyxl xlrd>=1.0.0 nextcloud-api-wrapper
|
||||||
RUN pip3 install html2text httpagentparser fuzzywuzzy[speedup] openpyxl xlrd>=1.0.0
|
|
||||||
RUN pip3 install pyncclient nextcloud-api-wrapper dropbox pysftp
|
|
||||||
|
|
|
@ -1,15 +0,0 @@
|
||||||
ARG BASE_IMAGE
|
|
||||||
FROM $BASE_IMAGE
|
|
||||||
USER root
|
|
||||||
|
|
||||||
RUN apt-get update && apt upgrade -y
|
|
||||||
RUN apt-get install gcc python3-dev libcups2-dev locales locales-all -y
|
|
||||||
RUN mkdir /backups 2>/dev/null
|
|
||||||
RUN mkdir /data 2>/dev/null
|
|
||||||
|
|
||||||
VOLUME /backups
|
|
||||||
VOLUME /data
|
|
||||||
|
|
||||||
RUN pip3 install python-crontab boto3 odoo-test-helper openai QifParser
|
|
||||||
RUN pip3 install html2text httpagentparser fuzzywuzzy[speedup] openpyxl xlrd>=1.0.0
|
|
||||||
RUN pip3 install pyncclient nextcloud-api-wrapper dropbox pysftp
|
|
Loading…
Reference in a new issue