diff --git a/.env.example b/.env.example
index 80bc9a3..de362a0 100644
--- a/.env.example
+++ b/.env.example
@@ -1,7 +1,7 @@
# Configurações de banco de dados
POSTGRES_DB='esus'
POSTGRES_USER='postgres'
-POSTGRES_PASSWORD='pass'
+POSTGRES_PASS='pass'
POSTGRES_HOST='host.docker.internal'
POSTGRES_PORT=5432
diff --git a/Dockerfile b/Dockerfile
index 3aa6dca..d8e8c0c 100644
--- a/Dockerfile
+++ b/Dockerfile
@@ -35,6 +35,9 @@ RUN apt-get update && \
apt-get clean && \
rm -rf /usr/share/doc/* /usr/share/man/* /var/lib/apt/lists/* /tmp/* /var/tmp/*
+# Instalar cliente PostgreSQL
+RUN apt-get update && apt-get install -y postgresql-client
+
# Substituir o comando `ps` para burlar a verificação de systemd
RUN mv /bin/ps /bin/ps.original && \
echo '#!/bin/sh' > /bin/ps && \
@@ -56,16 +59,16 @@ RUN echo '#!/bin/sh' > /bin/systemctl && \
ARG JAR_FILENAME
ARG HTTPS_DOMAIN
ARG DB_URL
-ARG DB_PASS
-ARG DB_USER
+ARG POSTGRES_PASS
+ARG POSTGRES_USER
ARG TRAINING
# Promovendo ARGS para ENV para uso no install.sh que roda dentro do entrypoint.sh e precisa dessas variáveis
ENV JAR_FILENAME=${JAR_FILENAME}
ENV TRAINING=${TRAINING}
ENV DB_URL=${DB_URL}
-ENV DB_PASS=${DB_PASS}
-ENV DB_USER=${DB_USER}
+ENV POSTGRES_PASS=${POSTGRES_PASS}
+ENV POSTGRES_USER=${POSTGRES_USER}
ENV HTTPS_DOMAIN=${HTTPS_DOMAIN}
# criando diretórios para uso posterior
diff --git a/Dockerfile.external-db b/Dockerfile.external-db
index 986495f..78778fd 100644
--- a/Dockerfile.external-db
+++ b/Dockerfile.external-db
@@ -36,14 +36,14 @@ RUN apt-get update && \
ARG JAR_FILENAME
ARG HTTPS_DOMAIN
ARG DB_URL
-ARG DB_PASS
-ARG DB_USER
+ARG POSTGRES_PASS
+ARG POSTGRES_USER
# Promovendo ARGS para ENV para uso no install.sh que roda dentro do entrypoint
ENV JAR_FILENAME=${JAR_FILENAME}
ENV DB_URL=${DB_URL}
-ENV DB_PASS=${DB_PASS}
-ENV DB_USER=${DB_USER}
+ENV POSTGRES_PASS=${POSTGRES_PASS}
+ENV POSTGRES_USER=${POSTGRES_USER}
ENV HTTPS_DOMAIN=${HTTPS_DOMAIN}
# criando diretórios para uso posterior
diff --git a/README.md b/README.md
index bd023ef..c85eebf 100644
--- a/README.md
+++ b/README.md
@@ -37,7 +37,7 @@ Utilize `sh build.sh --help` para mais opções, por exemplo, para instalar a ve
sh build.sh -e
```
-Acesse [Live/Demo](https://pec.filipelopes.med.br)
+Acesse [Live/Demo](https://dev.esus.noharm.ai)
Dúvidas? Colaboração? Ideias? Entre em contato pelo [WhatsApp](https://wa.me/5571986056232?text=Gostaria+de+informa%C3%A7%C3%B5es+sobre+o+projeto+PEC+SUS)
## Sumário
@@ -180,59 +180,22 @@ sudo cp data/backups/nome_do_arquivo.backup .
Ou pode-se optar por fazer o backup pela própria ferramenta do PEC, use:
```sh
-java jar esus-pec.jar -help
+# substitua a versão pelo que estiver utilizando dentro do container pec
+docker compose exec -it pec java jar esus-pec.jar -help
```
Para mais informações.
-2. Exclua todo o banco de dados e dados relacionados em volume
+2. Após isso, se seu banco de dados for externo, basta executar
```sh
-docker-compose down --remove-orphans --volumes
-sudo rm -rf data
+sh update.sh docker-compose.local-db.yml
```
-3. Crie o banco de dados
+Substitua o termo `docker-compose.local-db.yml` pelo termo `docker-compose.external-db.yml` para executar o script com o banco de dados externo.
-```sh
-docker-compose up -d psql
-```
-
-4. Copie o arquivo de backup
-
-```sh
-sudo cp nome_do_arquivo.backup data/backups/
-```
-
-5. Crie o banco de dados com base no backup
-
-```sh
-docker exec -it esus_psql bash
-pg_restore --verbose -U "postgres" -d "esus" -1 /home/seu_arquivo.backup
-```
-
-6. Instale o programa
-
-Fora do container, na pasta raiz do projeto execute, substituindo o nome do pacote `eSUS-AB-PEC-5.0.8-Linux64.jar` para a versão que você vai instalar em sua máquina.
-
-```sh
-sh build.sh -f eSUS-AB-PEC-5.0.14-Linux64.jar
-```
-
-## Comandos interessantes
-
-Caso o container tenha sido interrompido sem querer, o comando abaixo pode ser útil
-
-```sh
-# Em linux
-make run
-# Depois de rodar novamente os containers
-docker-compose up -d
-# Caso nenhum dos anteriores funcione execute diretamente o executável do sistema pec
-docker-compose up -d esus_app /opt/e-SUS/webserver/standalone.sh
-```
-## Bugs Conhecidos (Known Issues) / Troubleshoot / Q&A / FAQ
+## Bugs Conhecidos (Known Issues) / Troubleshoot / Q&A / FAQ
- **BREAKING CHANGE:** Desde a versão 5.3 o [certificado SSL é autogerenciado](https://saps-ms.github.io/Manual-eSUS_APS/docs/%C3%9Altimas%20releases/Vers%C3%A3o%205.3/#novidades---ferramentas-administrativas) e a versão Java utilizada é a 17 LTS. A última versão desse docker não funcionará para versões anteriores
- O Java 8 só funciona com OpenSSL 1.1, em caso de uso do OpenSSL mais recente 3.X, não irá funcionar as chaves PKCS12 para SSL, será necessário o uso das chaves *.jks nesses casos
diff --git a/aws/.env.example b/aws/.env.example
index 13091cf..4284e3c 100644
--- a/aws/.env.example
+++ b/aws/.env.example
@@ -1,7 +1,7 @@
# Configurações de banco de dados
POSTGRES_DB='esus'
POSTGRES_USER='postgres'
-POSTGRES_PASSWORD='pass'
+POSTGRES_PASS='pass'
POSTGRES_HOST='db' # host.docker.internal
POSTGRES_PORT=5432
TRAINING=true
diff --git a/aws/docker-compose.yml b/aws/docker-compose.yml
index 02e5267..3acf384 100644
--- a/aws/docker-compose.yml
+++ b/aws/docker-compose.yml
@@ -24,7 +24,7 @@ services:
restart: unless-stopped
environment:
- POSTGRES_USER=${POSTGRES_USER}
- - POSTGRES_PASSWORD=${POSTGRES_PASSWORD}
+ - POSTGRES_PASSWORD=${POSTGRES_PASS}
- POSTGRES_DB=${POSTGRES_DB}
volumes:
- ./esus-data/db:/var/lib/postgresql/data
diff --git a/aws/install.sh b/aws/install.sh
index 821d6d4..b3799dd 100644
--- a/aws/install.sh
+++ b/aws/install.sh
@@ -19,7 +19,7 @@ echo "Variáveis de ambiente:"
echo "*******************"
echo "DB_URL: ${DB_URL}"
echo "POSTGRES_USER: ${POSTGRES_USER}"
-echo "POSTGRES_PASSWORD: ${POSTGRES_PASSWORD}"
+echo "POSTGRES_PASS: ${POSTGRES_PASS}"
echo "JAR_FILENAME: ${JAR_FILENAME}"
echo "TRAINING: ${TRAINING}"
echo "*******************\n\n${NC}"
@@ -33,8 +33,8 @@ if [ -n "$POSTGRES_USER" ]; then
ARGS="$ARGS -username=${POSTGRES_USER}"
fi
-if [ -n "$POSTGRES_PASSWORD" ]; then
- ARGS="$ARGS -password=${POSTGRES_PASSWORD}"
+if [ -n "$POSTGRES_PASS" ]; then
+ ARGS="$ARGS -password=${POSTGRES_PASS}"
fi
# A ser executado java -jar
@@ -52,12 +52,12 @@ if [ -n "$TRAINING" ]; then
PSQL_CMD="psql -h ${POSTGRES_HOST} -p ${POSTGRES_PORT} -U ${POSTGRES_USER} -d ${POSTGRES_DB} -c \"update tb_config_sistema set ds_texto = null, ds_inteiro = 1 where co_config_sistema = 'TREINAMENTO';\""
# Exporta a senha do banco para evitar o prompt
- export PGPASSWORD="${POSTGRES_PASSWORD}"
+ export PGPASSWORD="${POSTGRES_PASS}"
# Executa o comando SQL
eval $PSQL_CMD
if [ $? -eq 0 ]; then
- echo -e "${GREEN}Configuração de treinamento aplicada com sucesso.${NC}"
+ echo -e "${GREEN}Configuração de treinamento aplicada com sucesso!${NC}"
else
echo -e "${RED}Erro ao aplicar configuração de treinamento.${NC}"
fi
diff --git a/build.sh b/build.sh
index f341de1..56eabc8 100755
--- a/build.sh
+++ b/build.sh
@@ -34,7 +34,7 @@ while getopts "d:f:h:cpe" flag; do
f) filename=${OPTARG} ;;
h) https_domain=${OPTARG} ;;
c) cache='--no-cache' ;;
- p) production=true ;;
+ p) production=false ;;
e) use_external_db=true ;;
\?)
echo "${RED}Opção inválida! Utilize --help para ajuda.${NC}"
@@ -43,6 +43,16 @@ while getopts "d:f:h:cpe" flag; do
esac
done
+# Caso production seja false determina training para true
+if [ "$production" = false ]; then
+ training=true
+fi
+
+# Caso o banco de dados for externo modifica a variável logo para produção
+if [ "$use_external_db" = true ]; then
+ production=true
+fi
+
# Define timeout para o Docker Compose
export COMPOSE_HTTP_TIMEOUT=8000
@@ -108,7 +118,7 @@ if command -v psql > /dev/null; then
if $use_external_db; then
echo "Testando conexão com o banco de dados externo em $POSTGRES_HOST..."
POSTGRES_HOST_FOR_TEST=$([ "$POSTGRES_HOST" = "host.docker.internal" ] && echo "localhost" || echo "$POSTGRES_HOST")
- if PGPASSWORD=$POSTGRES_PASSWORD psql -h $POSTGRES_HOST_FOR_TEST -U $POSTGRES_USER -p $POSTGRES_PORT -d $POSTGRES_DB -c '\q'; then
+ if PGPASSWORD=$POSTGRES_PASS psql -h $POSTGRES_HOST_FOR_TEST -U $POSTGRES_USER -p $POSTGRES_PORT -d $POSTGRES_DB -c '\q'; then
echo "${GREEN}Conexão ao banco de dados externa bem-sucedida.${NC}"
else
echo "${RED}Falha ao conectar ao banco de dados externo. Verifique as credenciais.${NC}"
@@ -132,12 +142,15 @@ if $use_external_db; then
docker compose -f docker-compose.external-db.yml up -d
else
jdbc_url="jdbc:postgresql://$POSTGRES_HOST:$POSTGRES_PORT/$POSTGRES_DB"
- training=''
echo "\n${GREEN}Construindo e subindo Docker com banco de dados local...${NC}"
- docker compose --progress plain -f docker-compose.local-db.yml build $cache \
+ echo "docker compose --progress plain -f docker-compose.local-db.yml build $cache \
--build-arg JAR_FILENAME=$jar_filename \
--build-arg HTTPS_DOMAIN=$https_domain \
--build-arg DB_URL=$jdbc_url \
+ --build-arg TRAINING=$training"
+ docker compose --progress plain -f docker-compose.local-db.yml build $cache \
+ --build-arg JAR_FILENAME=$jar_filename \
+ --build-arg DB_URL=$jdbc_url \
--build-arg TRAINING=$training
docker compose -f docker-compose.local-db.yml up -d
fi
\ No newline at end of file
diff --git a/docker-compose.external-db.yml b/docker-compose.external-db.yml
index 5b7b69f..f6f188b 100644
--- a/docker-compose.external-db.yml
+++ b/docker-compose.external-db.yml
@@ -11,8 +11,8 @@ services:
dockerfile: Dockerfile.external-db
args:
- TZ=${TZ}
- - DB_USER=${POSTGRES_USER}
- - DB_PASS=${POSTGRES_PASSWORD}
+ - POSTGRES_USER=${POSTGRES_USER}
+ - POSTGRES_PASS=${POSTGRES_PASS}
- HTTPS_DOMAIN=${HTTPS_DOMAIN}
stdin_open: true
tty: true
diff --git a/docker-compose.local-db.yml b/docker-compose.local-db.yml
index 3dc4011..8f75ae1 100644
--- a/docker-compose.local-db.yml
+++ b/docker-compose.local-db.yml
@@ -12,9 +12,12 @@ services:
dockerfile: Dockerfile
args:
- TZ=${TZ}
- - DB_USER=${POSTGRES_USER}
- - DB_PASS=${POSTGRES_PASSWORD}
- - HTTPS_DOMAIN=${HTTPS_DOMAIN}
+ environment:
+ - POSTGRES_USER=${POSTGRES_USER:-postgres}
+ - POSTGRES_PASS=${POSTGRES_PASS:-pass}
+ - POSTGRES_HOST=${POSTGRES_HOST:-db} # host.docker.internal
+ - POSTGRES_PORT=${POSTGRES_PORT:-5432}
+ - POSTGRES_DB=${POSTGRES_DB:-esus}
privileged: true
stdin_open: true
tty: true
@@ -32,7 +35,7 @@ services:
restart: unless-stopped
environment:
- POSTGRES_USER=${POSTGRES_USER:-postgres}
- - POSTGRES_PASSWORD=${POSTGRES_PASSWORD:-pass}
+ - POSTGRES_PASSWORD=${POSTGRES_PASS:-pass}
- POSTGRES_DB=${POSTGRES_DB:-esus}
volumes:
- ./esus-data/db:/var/lib/postgresql/data
diff --git a/install.sh b/install.sh
index f1b372b..1263f69 100755
--- a/install.sh
+++ b/install.sh
@@ -16,8 +16,8 @@ echo "Variáveis de ambiente:"
echo "*******************"
echo "HTTPS_DOMAIN: ${HTTPS_DOMAIN}"
echo "DB_URL: ${DB_URL}"
-echo "DB_USER: ${DB_USER}"
-echo "DB_PASS: ${DB_PASS}"
+echo "POSTGRES_USER: ${POSTGRES_USER}"
+echo "POSTGRES_PASS: ${POSTGRES_PASS}"
echo "JAR_FILENAME: ${JAR_FILENAME}"
echo "TRAINING: ${TRAINING}"
echo "*******************\n\n${NC}"
@@ -33,17 +33,12 @@ if [ -n "$DB_URL" ]; then
ARGS="$ARGS -url=${DB_URL}"
fi
-if [ -n "$DB_USER" ]; then
- ARGS="$ARGS -username=${DB_USER}"
+if [ -n "$POSTGRES_USER" ]; then
+ ARGS="$ARGS -username=${POSTGRES_USER}"
fi
-if [ -n "$DB_PASS" ]; then
- ARGS="$ARGS -password=${DB_PASS}"
-fi
-
-# Verificando variável de treinamento e se não está vazio
-if [ -n "$TRAINING" ]; then
- ARGS="$ARGS -treinamento"
+if [ -n "$POSTGRES_PASS" ]; then
+ ARGS="$ARGS -password=${POSTGRES_PASS}"
fi
# A ser executado java -jar
@@ -58,10 +53,10 @@ java -jar ${JAR_FILENAME} -console ${ARGS} -continue
# Verificando se a variável de treinamento existe, caso sim, executa o SQL
if [ -n "$TRAINING" ]; then
echo -e "${GREEN}Treinamento habilitado. Executando SQL de configuração...${NC}"
- PSQL_CMD="psql -h ${POSTGRES_HOST} -p ${POSTGRES_PORT} -U ${DB_USER} -d ${POSTGRES_DB} -c \"update tb_config_sistema set ds_texto = null, ds_inteiro = 1 where co_config_sistema = 'TREINAMENTO';\""
+ PSQL_CMD="psql -h ${POSTGRES_HOST} -p ${POSTGRES_PORT} -U ${POSTGRES_USER} -d ${POSTGRES_DB} -c \"update tb_config_sistema set ds_texto = null, ds_inteiro = 1 where co_config_sistema = 'TREINAMENTO';\""
# Exporta a senha do banco para evitar o prompt
- export PGPASSWORD="${DB_PASS}"
+ export PGPASSWORD="${POSTGRES_PASS}"
# Executa o comando SQL
eval $PSQL_CMD
diff --git a/update.sh b/update.sh
index ce5e788..44347be 100644
--- a/update.sh
+++ b/update.sh
@@ -3,8 +3,8 @@
# Variáveis de ambiente para o banco de dados
# DB_URL="jdbc:postgresql://db:5432/esus"
# DB_URL="jdbc:postgresql://db:5432/esus?ssl=true&sslmode=allow&sslfactory=org.postgresql.ssl.NonValidatingFactory"
-# DB_USER="postgres"
-# DB_PASS="pass"
+# POSTGRES_USER="postgres"
+# POSTGRES_PASS="pass"
# Caminhos e URLs
WORKDIR="/var/www/html"
@@ -96,7 +96,7 @@ docker compose -f "$DOCKER_COMPOSE_FILE" exec pec sh -c "
# Realiza o backup do banco de dados
echo 'Realizando backup do banco de dados...'
- env PGPASSWORD=\$DB_PASS pg_dump -Fc -v -h db -U \$DB_USER -d \$DB_NAME -f $BACKUP_FILE 2> $LOG_FILE
+ env PGPASSWORD=\$POSTGRES_PASS pg_dump -Fc -v -h db -U \$POSTGRES_USER -d \$DB_NAME -f $BACKUP_FILE 2> $LOG_FILE
echo \"Backup realizado em $BACKUP_FILE\"
# Filtra apenas warnings e erros no log
@@ -112,7 +112,7 @@ docker compose -f "$DOCKER_COMPOSE_FILE" exec pec sh -c "
# Atualiza o sistema
echo 'Atualizando o sistema...'
# Debugando comando de instalação
- java -jar $WORKDIR/\$JAR_FILENAME -console -url=\$DB_URL -username=\$DB_USER -password=\$DB_PASS -continue
+ java -jar $WORKDIR/\$JAR_FILENAME -console -url=\$DB_URL -username=\$POSTGRES_USER -password=\$POSTGRES_PASS -continue
"
# Reinicia o container