Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/guillaumefalourd/docker-mysql-python
POC usando Docker com MySQL e Python (FastAPI) đ§đ·
https://github.com/guillaumefalourd/docker-mysql-python
beginner docker docker-compose fastapi mysql python
Last synced: about 1 month ago
JSON representation
POC usando Docker com MySQL e Python (FastAPI) đ§đ·
- Host: GitHub
- URL: https://github.com/guillaumefalourd/docker-mysql-python
- Owner: GuillaumeFalourd
- Created: 2022-08-09T19:54:39.000Z (over 2 years ago)
- Default Branch: main
- Last Pushed: 2022-09-09T12:29:22.000Z (about 2 years ago)
- Last Synced: 2024-04-19T21:25:14.917Z (7 months ago)
- Topics: beginner, docker, docker-compose, fastapi, mysql, python
- Language: Python
- Homepage: https://www.zup.com.br/blog/docker-na-pratica
- Size: 64.5 KB
- Stars: 9
- Watchers: 3
- Forks: 4
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# Docker Mysql Python
đ RepositĂłrio relacionado ao artigo [Docker na prĂĄtica](https://www.zup.com.br/blog/docker-na-pratica).
## Index
- [Contexto](https://github.com/GuillaumeFalourd/docker-mysql-python/blob/main/README.md#-contexto)
- [Docker com Banco de dados Mysql](https://github.com/GuillaumeFalourd/docker-mysql-python/blob/main/README.md#-docker-com-banco-de-dados-mysql)
- [Docker com Backend Python](https://github.com/GuillaumeFalourd/docker-mysql-python/blob/main/README.md#-docker-com-backend-python)
- [Docker Compose](https://github.com/GuillaumeFalourd/docker-mysql-python/blob/main/README.md#-docker-compose)
- [Desafio](https://github.com/GuillaumeFalourd/docker-mysql-python/blob/main/README.md#-desafio)
- [ReferĂȘncias](https://github.com/GuillaumeFalourd/docker-mysql-python/blob/main/README.md#-refer%C3%AAncias)## đ Contexto
Esse projeto Ă© composto de 2 mĂłdulos:
- um backend em Python usando [FastAPI](https://fastapi.tiangolo.com/) na pasta `backend`.
- as configuraçÔes do banco de dados usando mysql na pasta `mysql`.## đ Docker com Banco de dados Mysql
### 1.1 Construir a imagem
Na pasta `mysql` do repositĂłrio, existe um arquivo [Dockerfile](https://github.com/GuillaumeFalourd/docker-mysql-python/blob/main/mysql/Dockerfile) a partir do qual podemos contruir uma imagem do nosso `database`:
```bash
docker build -t company-database .
```Conferir que a imagem foi gerada:
```
docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
company-database latest 89b38d78dc16 20 seconds ago 431MB
```### 1.2 Rodando o Container
```bash
docker run -d -p 3306:3306 --name company-database -e MYSQL_ROOT_PASSWORD=RootPassword company-database
```SerĂĄ possĂvel consultar que o container estĂĄ `up` usando o comando `docker ps`.
### 1.3 Acesso ao Banco
```bash
docker exec -it company-database bashmysql -uroot -p
Enter password: (RootPassword)
```_Nota: VocĂȘ pode rodar o comando `exit` em qualquer momento para sair do mysql ou do container do Docker._
#### 1.3.1 Acessar database
```bash
mysql> show databases;+--------------------+
| Database |
+--------------------+
| information_schema |
| Company |
| mysql |
| performance_schema |
| sys |
+--------------------+
5 rows in set (0.00 sec)
```#### 1.3.2 Acessar database company
```
mysql> use Company;Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A
Database changed
```#### 1.3.3 Mostrar Tabelas
```
mysql> show tables;+-------------------+
| Tables_in_company |
+-------------------+
| employees |
+-------------------+
1 row in set (0.00 sec)
```#### 1.3.4 Mostrar colunas tabela employees
```
mysql> show columns from employees;+------------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+------------+-------------+------+-----+---------+-------+
| first_name | varchar(25) | YES | | NULL | |
| last_name | varchar(25) | YES | | NULL | |
| department | varchar(15) | YES | | NULL | |
| email | varchar(50) | YES | | NULL | |
+------------+-------------+------+-----+---------+-------+
4 rows in set (0.00 sec)
```#### 1.3.5 Mostrar conteĂșdo tabela employees
```
mysql> select * from employees;
+------------+-----------+------------+-----------------------+
| first_name | last_name | department | email |
+------------+-----------+------------+-----------------------+
| John | Doe | IT | [email protected] |
| Bill | Campbell | HR | [email protected] |
+------------+-----------+------------+-----------------------+
2 rows in set (0.01 sec)
```### 1.4 Desmontar o container
ApĂłs ter saido do container (usando o comando `exit`), ele continuarĂĄ `Up` atĂ© vocĂȘ parar-lo.
Confere usando o comando `docker ps` que aparece ainda um container usando a imagem e o nome `company-database`.
Para parar-lo, use o comando `docker kill ` (apĂłs selecionar o CONTAINER ID que deseje parar).
AtravĂ©s do comando `docker ps -a` agora, Ă© possĂvel conferir que o estado do container Ă© `Exited`.
Para remover-lo definitivamente dessa lista e conseguir subir um novo container usando o mesmo nome, basta executar `docker rm `.
Após isso, até a lista retornada pelo comando `docker ps -a` estarå vazia.
## đ Docker com Backend Python
### 1.1 Construir a imagem
Na pasta `backend` do repositĂłrio, existe um arquivo [Dockerfile](https://github.com/GuillaumeFalourd/docker-mysql-python/blob/main/backend/Dockerfile) a partir do qual podemos contruir uma imagem do nosso `backend`:
```bash
docker build -t company-backend .
```Conferir que a imagem foi gerada:
```
docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
company-backend latest 89b38d78dc16 20 seconds ago 431MB
```### 1.2 Rodando o Container
```bash
docker run -d -p 80:80 --name company-backend company-backend
```Abrindo o navegador, daria para acessar a pĂĄgina inicial do app na URL [http://0.0.0.0/](http://0.0.0.0/) retornando `Hello World`.
JĂĄ, a URL [http://0.0.0.0/employees](http://0.0.0.0/employees) nĂŁo funcionaria, como o banco de dados nĂŁo estĂĄ configurado.
### 1.3 Acessar o app
```bash
docker exec -it company-backend bash
```Uma vez no container, vocĂȘ pode listar e ver os arquivos que foram inclusos la.
_Nota: VocĂȘ pode rodar o comando `exit` em qualquer momento para sair do container._
### 1.4 Desmontar o container
Da mesma forma que com o container do database, apĂłs ter saido do container de backend (usando o comando `exit`), ele continuarĂĄ `Up` atĂ© vocĂȘ parar-lo.
Confere usando o comando `docker ps` que aparece ainda um container usando a imagem e o nome `company-backend`.
Para parar-lo, use o comando `docker kill ` (apĂłs selecionar o CONTAINER ID que deseje parar).
AtravĂ©s do comando `docker ps -a` agora, Ă© possĂvel conferir que o estado do container Ă© `Exited`.
Para remover-lo definitivamente dessa lista e conseguir subir um novo container usando o mesmo nome, basta executar `docker rm `.
Após isso, até a lista retornada pelo comando `docker ps -a` estarå vazia.
## đđ Docker Compose
Quando trabalhamos com vårios containers, gerenciar a execução deles pode ficar mais complexo.
Para isso, temos algumas tecnologias que auxiliam, sendo uma delas o **Docker Compose**.### 1. Subir o docker-compose
Na pasta `root` do repositĂłrio:
```bash
docker-compose up
```_Obs: Caso algumas portas jå estiverem sendo usadas, liste os containers ativos através do comando `docker ps`, e após selecionar o CONTAINER ID que deseje parar e execute o comando `docker kill `_
Abrindo o navegador, daria para acessar a pĂĄgina inicial do app na URL [http://0.0.0.0/](http://0.0.0.0/) retornando `Hello World`.
Também daria agora para acessar a URL [http://0.0.0.0/employees](http://0.0.0.0/employees) com sucesso, que retornaria a lista de `employees` presentes no banco.
### 2. Derrubar o docker-compose
Para sair do prompt do docker-compose up, use as teclas `CTRL + C`.
Isso nĂŁo vai remover os containers, serĂĄ ainda possĂvel ver eles usando o comando `docker ps -a`.
Para remover os containers, use o seguinte comando:
```bash
docker-compose down
```Executando o comando `docker ps -a` agora, os containers nĂŁo deveriam mais aparecer.
## đ Desafio
### Java & PostgreSQL
Agora que entendeu como o **Docker** e o **Docker Compose** funcionam, tentem adaptar o cĂłdigo presente nesse projeto usando agora um Backend em **Java** com **JDBC** e **PostgreSQL**.
## đ ReferĂȘncias
- [Docker para desenvolvedores](https://github.com/gomex/docker-para-desenvolvedores)
- [Descomplicando Docker](https://github.com/badtuxx/DescomplicandoDocker)
- [Docker, tudo que vocĂȘ precisa saber](https://www.zup.com.br/blog/o-que-e-docker-e-conteiner)
- [Docker DCA - Playlist Youtube](https://www.youtube.com/playlist?list=PL4ESbIHXST_TJ4TvoXezA0UssP1hYbP9_)
- [Docker DCA - Alura](https://www.alura.com.br/formacao-docker-dca)