{"id":16497261,"url":"https://github.com/guillaumefalourd/docker-mysql-python","last_synced_at":"2025-10-27T23:31:33.725Z","repository":{"id":55459192,"uuid":"523090275","full_name":"GuillaumeFalourd/docker-mysql-python","owner":"GuillaumeFalourd","description":"POC usando Docker com MySQL e Python (FastAPI) 🇧🇷","archived":false,"fork":false,"pushed_at":"2022-09-09T12:29:22.000Z","size":66,"stargazers_count":9,"open_issues_count":0,"forks_count":4,"subscribers_count":3,"default_branch":"main","last_synced_at":"2025-02-01T09:11:14.276Z","etag":null,"topics":["beginner","docker","docker-compose","fastapi","mysql","python"],"latest_commit_sha":null,"homepage":"https://www.zup.com.br/blog/docker-na-pratica","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/GuillaumeFalourd.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2022-08-09T19:54:39.000Z","updated_at":"2024-03-08T22:03:50.000Z","dependencies_parsed_at":"2022-08-15T00:40:51.825Z","dependency_job_id":null,"html_url":"https://github.com/GuillaumeFalourd/docker-mysql-python","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/GuillaumeFalourd%2Fdocker-mysql-python","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/GuillaumeFalourd%2Fdocker-mysql-python/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/GuillaumeFalourd%2Fdocker-mysql-python/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/GuillaumeFalourd%2Fdocker-mysql-python/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/GuillaumeFalourd","download_url":"https://codeload.github.com/GuillaumeFalourd/docker-mysql-python/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":238574395,"owners_count":19494721,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["beginner","docker","docker-compose","fastapi","mysql","python"],"created_at":"2024-10-11T14:39:00.124Z","updated_at":"2025-10-27T23:31:33.440Z","avatar_url":"https://github.com/GuillaumeFalourd.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Docker Mysql Python\n\n👉 Repositório relacionado ao artigo [Docker na prática](https://www.zup.com.br/blog/docker-na-pratica).\n\n## Index\n\n- [Contexto](https://github.com/GuillaumeFalourd/docker-mysql-python/blob/main/README.md#-contexto)\n- [Docker com Banco de dados Mysql](https://github.com/GuillaumeFalourd/docker-mysql-python/blob/main/README.md#-docker-com-banco-de-dados-mysql)\n- [Docker com Backend Python](https://github.com/GuillaumeFalourd/docker-mysql-python/blob/main/README.md#-docker-com-backend-python)\n- [Docker Compose](https://github.com/GuillaumeFalourd/docker-mysql-python/blob/main/README.md#-docker-compose)\n- [Desafio](https://github.com/GuillaumeFalourd/docker-mysql-python/blob/main/README.md#-desafio)\n- [Referências](https://github.com/GuillaumeFalourd/docker-mysql-python/blob/main/README.md#-refer%C3%AAncias)\n\n\n## 📋 Contexto\n\nEsse projeto é composto de 2 módulos:\n- um backend em Python usando [FastAPI](https://fastapi.tiangolo.com/) na pasta `backend`.\n- as configurações do banco de dados usando mysql na pasta `mysql`.\n\n\n## 🗃 Docker com Banco de dados Mysql\n\n### 1.1 Construir a imagem\n\nNa 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`:\n\n```bash\ndocker build -t company-database .\n```\n\nConferir que a imagem foi gerada:\n\n```\ndocker images\nREPOSITORY              TAG       IMAGE ID       CREATED          SIZE\ncompany-database        latest    89b38d78dc16   20 seconds ago   431MB\n```\n\n### 1.2 Rodando o Container\n\n```bash\ndocker run -d -p 3306:3306 --name company-database -e MYSQL_ROOT_PASSWORD=RootPassword company-database\n```\n\nSerá possível consultar que o container está `up` usando o comando `docker ps`.\n\n### 1.3 Acesso ao Banco\n\n```bash\ndocker exec -it company-database bash\n\nmysql -uroot -p\nEnter password: (RootPassword)\n```\n\n_Nota: Você pode rodar o comando `exit` em qualquer momento para sair do mysql ou do container do Docker._\n\n#### 1.3.1 Acessar database\n\n```bash\nmysql\u003e show databases;\n\n+--------------------+\n| Database           |\n+--------------------+\n| information_schema |\n| Company            |\n| mysql              |\n| performance_schema |\n| sys                |\n+--------------------+\n5 rows in set (0.00 sec)\n```\n\n#### 1.3.2 Acessar database company\n\n```\nmysql\u003e use Company;\n\nReading table information for completion of table and column names\nYou can turn off this feature to get a quicker startup with -A\nDatabase changed\n```\n\n#### 1.3.3 Mostrar Tabelas\n\n```\nmysql\u003e show tables;\n\n+-------------------+\n| Tables_in_company |\n+-------------------+\n| employees         |\n+-------------------+\n1 row in set (0.00 sec)\n```\n\n#### 1.3.4 Mostrar colunas tabela employees\n\n```\nmysql\u003e show columns from employees;\n\n+------------+-------------+------+-----+---------+-------+\n| Field      | Type        | Null | Key | Default | Extra |\n+------------+-------------+------+-----+---------+-------+\n| first_name | varchar(25) | YES  |     | NULL    |       |\n| last_name  | varchar(25) | YES  |     | NULL    |       |\n| department | varchar(15) | YES  |     | NULL    |       |\n| email      | varchar(50) | YES  |     | NULL    |       |\n+------------+-------------+------+-----+---------+-------+\n4 rows in set (0.00 sec)\n```\n\n#### 1.3.5 Mostrar conteúdo tabela employees\n\n```\nmysql\u003e select * from employees;\n+------------+-----------+------------+-----------------------+\n| first_name | last_name | department | email                 |\n+------------+-----------+------------+-----------------------+\n| John       | Doe       | IT         | johndoe@mail.com      |\n| Bill       | Campbell  | HR         | billcampbell@mail.com |\n+------------+-----------+------------+-----------------------+\n2 rows in set (0.01 sec)\n```\n\n### 1.4 Desmontar o container\n\nApós ter saido do container (usando o comando `exit`), ele continuará `Up` até você parar-lo.\n\nConfere usando o comando `docker ps` que aparece ainda um container usando a imagem e o nome `company-database`.\n\nPara parar-lo, use o comando `docker kill \u003cCONTAINER_ID\u003e` (após selecionar o CONTAINER ID que deseje parar).\n\nAtravés do comando `docker ps -a` agora, é possível conferir que o estado do container é `Exited`.\n\nPara remover-lo definitivamente dessa lista e conseguir subir um novo container usando o mesmo nome, basta executar `docker rm \u003cCONTAINER_ID\u003e`.\n\nApós isso, até a lista retornada pelo comando `docker ps -a` estará vazia.\n\n\n## 🐍 Docker com Backend Python\n\n### 1.1 Construir a imagem\n\nNa 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`:\n\n```bash\ndocker build -t company-backend .\n```\n\nConferir que a imagem foi gerada:\n\n```\ndocker images\nREPOSITORY              TAG       IMAGE ID       CREATED          SIZE\ncompany-backend        latest    89b38d78dc16   20 seconds ago   431MB\n```\n\n### 1.2 Rodando o Container\n\n```bash\ndocker run -d -p 80:80 --name company-backend company-backend\n```\n\nAbrindo 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`.\n\nJá, 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.\n\n### 1.3 Acessar o app\n\n```bash\ndocker exec -it company-backend bash\n```\n\nUma vez no container, você pode listar e ver os arquivos que foram inclusos la.\n\n_Nota: Você pode rodar o comando `exit` em qualquer momento para sair do container._\n\n### 1.4 Desmontar o container\n\nDa 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.\n\nConfere usando o comando `docker ps` que aparece ainda um container usando a imagem e o nome `company-backend`.\n\nPara parar-lo, use o comando `docker kill \u003cCONTAINER_ID\u003e` (após selecionar o CONTAINER ID que deseje parar).\n\nAtravés do comando `docker ps -a` agora, é possível conferir que o estado do container é `Exited`.\n\nPara remover-lo definitivamente dessa lista e conseguir subir um novo container usando o mesmo nome, basta executar `docker rm \u003cCONTAINER_ID\u003e`.\n\nApós isso, até a lista retornada pelo comando `docker ps -a` estará vazia.\n\n\n## 🐍🗃 Docker Compose\n\nQuando trabalhamos com vários containers, gerenciar a execução deles pode ficar mais complexo. \nPara isso, temos algumas tecnologias que auxiliam, sendo uma delas o **Docker Compose**. \n\n### 1. Subir o docker-compose\n\nNa pasta `root` do repositório:\n\n```bash\ndocker-compose up\n```\n\n_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 \u003cCONTAINER_ID\u003e`_\n\nAbrindo 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`.\n\nTambé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.\n\n### 2. Derrubar o docker-compose\n\nPara sair do prompt do docker-compose up, use as teclas `CTRL + C`.\n\nIsso não vai remover os containers, será ainda possível ver eles usando o comando `docker ps -a`.\n\nPara remover os containers, use o seguinte comando:\n\n```bash\ndocker-compose down\n```\n\nExecutando o comando `docker ps -a` agora, os containers não deveriam mais aparecer.\n\n\n## 🛠 Desafio\n\n### Java \u0026 PostgreSQL\n\nAgora 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**.\n\n\n## 📚 Referências\n\n- [Docker para desenvolvedores](https://github.com/gomex/docker-para-desenvolvedores) \n- [Descomplicando Docker](https://github.com/badtuxx/DescomplicandoDocker)\n- [Docker, tudo que você precisa saber](https://www.zup.com.br/blog/o-que-e-docker-e-conteiner)\n- [Docker DCA - Playlist Youtube](https://www.youtube.com/playlist?list=PL4ESbIHXST_TJ4TvoXezA0UssP1hYbP9_)\n- [Docker DCA - Alura](https://www.alura.com.br/formacao-docker-dca)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fguillaumefalourd%2Fdocker-mysql-python","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fguillaumefalourd%2Fdocker-mysql-python","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fguillaumefalourd%2Fdocker-mysql-python/lists"}