anúncios

quarta-feira, 25 de setembro de 2019

Publicando imagens no Docker Hub

O objetivo deste post é explicar os procedimentos para publicar uma imagem no Docker Hub para que todos posso utilizar.

Docker Hub é o repositório de imagens para containers Docker. Então, o primeiro passo é criar uma conta no Docker Hub

Tendo o ambiente Docker configurado e pretende publicar no Docker Hub, segue os procedimentos abaixo:

Entrar com a conta do Docker Hub
$ docker login

Build da imagem
$ docker build -t <nome-imagem> .

Criar a tag da imagem
$ docker tag <nome-imagem> <user>/<nome-imagem>

Publicar a imagem
$ docker push <user>/<nome-image>

Pronto. Agora uma vez publicado a imagem no Docker Hub, pode ser utilizado de duas formas, a primeira é com docker pull <user>/<nome-imagem> a segunda é adicionar no docker-compose.yml e a terceira seria caso deseja customizar uma imagem existente, no Dockerfile em FROM <user>/<nome-imagem>.

Feito!

segunda-feira, 23 de setembro de 2019

Removendo images e containers Docker

De vez em quanto é necessário fazer uma limpeza no sistema, removendo todos os containers e images Docker. Então, como fazer? Segue os procedimentos. O primeiro apenas lista os containers ativos no sistema.

Caso o seu usuário que está logado não esteja no grupo Docker, então para poder executar os comandos Docker com usuário regular, faça isso
$ sudo usermod -aG docker $(whoami)

Listar os containers ativos

$ docker ps -a

Parar todos os containers, com a opção -q lista apenas os IDs dos containers
$ docker stop $(docker ps -a -q)

Remover todos os containers, com a opção -q lista apenas os IDs dos containers
$ docker rm $(docker ps -a -q)

Após parar todos os containers, pode então remover todas as images utilizando o comando parecido com o que foi utilizado para parar os containers
$ docker rmi $(docker images -q)

Script Shell que automatiza o processo


$ vim remove-containers.sh

#!/bin/bash

echo "Parando os containers...."
docker stop $(docker ps -a -q)

echo "Removendo os containers...."
docker rm $(docker ps -a -q)


echo "Removendo as imagens...."
docker rmi $(docker images -q)


ESC +:x (salvar e sair do editor Vim)

$ chmod +x remove-containers.sh
$./remove-containers.sh

Feito!

quarta-feira, 4 de setembro de 2019

Integrando Oracle Client no PHP com Linux

Sabemos que os que desenvolvem em PHP no Linux, geralmente utilizam ambiente local de forma manual, instalar cada pacote separado: Apache, PHP e MySQL, mas precisa incluir a extensão Oracle no PHP, então, o objetivo deste howto é explicar a integração com SGBD Oracle

O presente howto explicará os procedimentos de integração com Oracle Client no PHP em seu ambiente de desenvolvimento local na distribuição Linux Debian e derivados.

Segue os procedimentos:

1. Atualizar o sistema e demais pacotes necessários

# apt update
# apt install apache2 php7.3-cli php7.3-common php7.3-curl php7.3-gd php7.3-json php7.3-mbstring php7.3-mysql php7.3-xml php7.3-fpm php7.3-dev


2. Download do pacote Oracle Client

Pacotes oracle-instantclient19.3-basiclite-19.3.0.0.0-1.x86_64.rpm, oracle-instantclient19.3-sqlplus-19.3.0.0.0-1.x86_64.rpm , oracle-instantclient19.3-devel-19.3.0.0.0-1.x86_64.rpm

PS: Até a data de publicação deste howto a versão corrente do Oracle Cient é 19.3, então no geral basta substituir a versão que for a mais recente.

3. Instalar o pacote alien para converter o .rpm to .deb
$ sudo apt install alien

4. Converter os arquivos .rpm em .deb
$ sudo alien -i oracle-instantclient19.3-basiclite-19.3.0.0.0-1.x86_64.rpm

$ sudo alien -i oracle-instantclient19.3-sqlplus-19.3.0.0.0-1.x86_64.rpm

$ sudo alien -i oracle-instantclient19.3-devel-19.3.0.0.0-1.x86_64.rpm


5. Instalar o pacote libaio1
$ sudo apt install libaio1

6. Criar o arquivo oracle.conf no diretório /etc/ld.so.conf.d/ e dentro do arquivo adicionar
/usr/lib/oracle/19.3/client64/lib
$ sudo vim /etc/ld.so.conf.d/oracle.conf

7. Atualizar as bibliotecas compartilhadas do sistema
$ sudo ldconfig

8. Exportar a variável ORACLE_HOME

$ export ORACLE_HOME=/usr/lib/oracle/19.3/client64/

9. Download do código fonte do oci8 e extrair os arquivos e fazer a compilação.

$ sudo pecl download OCI8
$ tar zxvf oci8-2.1.4.tgz
$ cd oci8-2.1.4/
$ phpize
$ ./configure --with-oci8=instantclient,/usr/lib/oracle/19.3/client64/lib
$ sudo make install


10. Habilitar o oci8.ini no diretório de módulos do PHP /etc/php/7.2/mods-available/ e criar um link simbólico /etc/php/7.2/apache2/conf.d
$ sudo vim /etc/php/7.2/mods-available/oci8.ini

Adicionar no arquivo oci8.ini
extension=oci8.so
extension=pdo_oci.so
$ sudo ln -s /etc/php/7.2/mods-available/oci8.ini /etc/php/7.2/apache2/conf.d/oci8.ini

11. Faça o download em formato ZIP do código fonte conforme a versão do PHP que foi instalado diretamente no Github https://github.com/php/php-src/tree/PHP-7.3 . Esse passo é para conseguimos a versão correta da lib PDO_OCI.

12. Extrair e compilar a lib PDO_OCI

$ unzip php-src-PHP-7.3.zip
$ cd php-src-PHP-7.3 /ext/pdo_oci/
$ phpize
$ ./configure --with-pdo-oci=instantclient,/usr,19.3
$ sudo make install


13. Habilitar a lib pdo_oci gerada no PHP
$ sudo vim /etc/php/7.3/mods-available/pdo_oci.ini
Adicione o conteúdo abaixo
extension=pdo_oci.so
$ cd /etc/php/7.3/apache2/conf.d
$ sudo ln -s /etc/php/7.3/mods-available/pdo_oci.ini pdo_oci.ini


14. Reiniciar o Apache
$ sudo service apache2 restart

15. Testar com a função phpinfo() no info.php se a extensão Oracle foi habilitada
$ sudo vim /var/www/html/info.php
< ?php
phpinfo();


Confere os screenshots abaixo:





Se exibir como no screenshot, então a extensão Oracle no PHP foi habilitada corretamente.

13. Testar conexão com banco de dados Oracle no PHP
Agora para confirmar, teste a conexão com Oracle no script PHP testeconectaoracle.php
< ?php
try{
$conn = new PDO('oci:dbname=//127.0.0.1:1521/testedb; 'oracleuser','password');
if($conn) {
echo "database conectado";
}
}catch (PDOException $e){
// report error message
echo $e->getMessage();
}


No browser http://localhost/testeconectaoracle.php
Com isso, irá aparecer a mensagem "database conectado" , se as credencias do usuário, password e banco estiverem corretas.

Feito!

segunda-feira, 2 de setembro de 2019

Integrando o Oracle no XAMPP

Sabemos que os que desenvolvem em PHP no Windows, geralmente utilizam o XAMPP, ferramenta que inclui Apache, PHP e MySQL, mas precisa incluir a extensão Oracle no PHP, então, o objetivo deste howto é explicar a integração com SGBD Oracle no XAMPP.

Segue os procedimentos:

1. Download do OCI8 PECL package em pecl.php.net e copiar o arquivo OCI8 PERCL package extraído para C:\xampp\php\ext\php_oci8_12c.dll



2.Editar o arquivo php.ini localizado em C:\xampp\php\php.ini
extension=oci8_12c
extension_dir="C:\xampp\php\ext"
3. Download do Oracle Instant Client Basic em OTN
Selecione como no screenshot, mas é importante lembrar que essa versão corresponde até a data de publicação desta postagem. Então concentre no pacote instantclient-basic-windows.x64-XXX, onde o XXX corresponde a versão.



4. Extrair o Oracle Instant Client no diretório C:\Oracle\instantclient_19.3 e adicione no PATH do Windows.

5. Criar um arquivo info.php e salvar no C:\xampp\htdocs
< ?php
  phpinfo();


6. Reinicie o Apache e acesse http://localhost/info.php



Se exibir como no screenshot, então a extensão Oracle no PHP foi habilitada corretamente.

Agora para confirmar, teste a conexão com Oracle no script PHP testeconectaoracle.php

< ?php
try{
$conn = new PDO('oci:dbname=//127.0.0.1:1521/testedb; 'oracleuser','password');
if($conn) {
echo "database conectado";
}
}catch (PDOException $e){
// report error message
echo $e->getMessage();
}


No browser http://localhost/testeconectaoracle.php
Com isso, irá aparecer a mensagem "database conectado" , se as credencias do usuário, password e banco estiverem corretas.

Feito!