Docker containers running sample nodejs app among others tools for learning purposes.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 

87 lines
3.7 KiB

Em complemento a resposta acima....
Pré-requisitos para funcionamento de um projeto em docker na infraestrutura do Labbs:
volumes:
O padrão do volume do lado do Host deve ser assim:
/mnt/dados/nomedogrupo/nomedoprojeto:/path/to/container
Onde nomedogrupo no caso de projetos pessoais, será o nome do usuário. E nomedoprojeto como o próprio nome diz, é o nome do projeto criado.
Network
Recomendamos por motivos de segurança, caso seu projeto utilize algum banco de dados, que seja criada uma rede específica para comunicação do banco de dados com a aplicação que fará uso dela. Dessa forma, utilize a seguinte configuração para criação e utilização dessa rede:
networks:
app-bd-net:
driver: overlay
traefik-net:
external:
name: traefik-net
No swarm já temos criada a rede default chamada traefik-net. Se quer somente colocar um projeto simples via docker-compose basta adicionar as linhas a seguir ao final do seu docker-compose.yml:
networks:
default:
external:
name: traefik-net
Senão, se for utilizar um wordpress por exemplo que utiliza um banco de dados, para utilizar a segurança mencionada mais acima, utilize a rede criada (app-bd-net) para o service do banco de dados e do wordpress e a rede Traefik-net somente para o wordpress. Dessa forma somente o wordpress terá contato com a rede externa traefik-net e o banco de dados somente estará acessível pela rede app-bd-net a qual está só ele e o wordpress.
Label traefik(informações de borda)
Algumas informações aqui são necessárias para que o traefik(gerenciador de borda) reconheça e aponte corretamente as requisições para seu container. São elas:
deploy:
labels:
- traefik.docker.network=traefik-net
- traefik.frontend.entryPoints=internal_http,internal_https,external_http,external_https
- traefik.frontend.rule=Host:seudominio.labbs.com.br
- traefik.port=8080(Se tomcat)80(se nginx)
.gitlab-ci.yml
Aqui teremos basicamente 2 modelos de arquivos responsáveis por chamar os scripts de CI/CD: Um que chama os scripts de build e deploy e outro que chama somente o script de deploy.
Branch deploy
Branch necessária para disponibilização do container rodando em Produção. Após a criação dessa branch(clone da master), além da master que vc já tem por padrão, basta realizar o merge request da branch master para a branch deploy e o projeto já irá pra produção.
links, depends, restart: always
Esses parâmetros serão ignorados no modo swarm com docker-compose versão 3 por não serem suportados e já terem suas funções intrinsecamente realizadas.
sandman.yml
Esse arquivo não é obrigatório no caso de o projeto ser somente de deploy, porém, oferece algumas possibilidades de configurações adicionais ao projeto: port, subdomain, edges, deploy_mode, desired instances, dentre outros.
-#internal port of container, for traefik connection
-#default: 80
port: 80
-#override subdomain in host of container, i.e.: foo.labbs.com.br
-#default: Inverted git repository path
subdomain: foo
-#override host of container
-#default: $SUBDOMAIN.labbs.com.br
host: test.labbs.com.br
-#enable redirect ssl
-#default: true
ssl: true
-#create redirections on edges
-#default:
redirects: teste.labbs.com.br,teste2.labbs.com.br
-#define edges of container
-#default: internal
edges: internal,external(Acesso via internet)
-#define desired instances number of container
-#default: 1
desired_instances: 1
-#define mode of deploy of service. (service or stack)
-#default: service
deploy_mode: stack
-#define name of stack
-#warning: [usage mode in deprecation] old usage of variable enabled stack deploy mode
-#default:
stack: stacktest