Skip to content

Commit

Permalink
chore: use docker-compose to deploy s3 bucket and smtp for local deve…
Browse files Browse the repository at this point in the history
…lopment
  • Loading branch information
luifr10 committed Aug 4, 2024
1 parent 0b5e55d commit 28d4dbc
Show file tree
Hide file tree
Showing 4 changed files with 47 additions and 22 deletions.
28 changes: 9 additions & 19 deletions confiture-rest-api/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@ Le projet est une API [Nest.js](https://nestjs.com/) et utilise une base de donn
- [Node.js](https://nodejs.org)
- [Yarn](https://yarnpkg.com)
- [Docker](https://www.docker.com)
- [Docker Compose](https://docs.docker.com/compose/)

## Installation

Expand All @@ -16,28 +17,17 @@ Installer les dépendances :
yarn install
```

Créer le fichier de variables d’environnement :
Lancer les conteneurs docker :

```sh
cp .env.example .env
```

Remplir les variables d’environnement requises dans le `.env` :

- `MAILER_USER` et `MAILER_PASSWORD` peuvent être générées via [https://ethereal.email/](https://ethereal.email/) en cliquant sur "Create Ethereal account".
- `AIRTABLE_*`, `S3_*` et `AWS_*` doivent être demandées en privé.
- `JWT_SECRET` peut être laissé à sa valeur par défaut.

Lancer la base de données :

```sh
docker run --name confiture-db \
--env POSTGRES_USER=db-user \
--env POSTGRES_PASSWORD=db-password \
--publish 127.0.0.1:5432:5432 \
--detach \
postgres:13
docker-compose up -d
```
Ci-dessous la liste des applications démarrées :
| Application | Description | Accès |
| -- | -- | -- |
| `db` | Bases de données Postgres | localhost:5432 |
| `minio` | Serveur S3 permettant de :<br> - créer un bucket<br> - créer une paire AWS_ACCESS_KEY_ID & AWS_SECRET_ACCESS_KEY | - IHM d'administration : http://localhost:9001 avec *login:* `ara-s3-user` / *mot de passe:* `ara-s3-password`<br> - API S3 : http://localhost:9000 |
| `fake-smtp` | Faut serveur smtp | - IHM de consultation des mails : http://localhost:8901<br> - Port serveur SMTP : 1025 |

Lancer les migrations de la base de données :

Expand Down
34 changes: 34 additions & 0 deletions confiture-rest-api/docker-compose.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
services:
db:
image: postgres
restart: always
environment:
POSTGRES_USER: db-user
POSTGRES_PASSWORD: db-password
ports:
- "5432:5432"

minio-server:
image: 'bitnami/minio:latest'
restart: always
ports:
- '9000:9000'
- '9001:9001'
environment:
MINIO_DEFAULT_BUCKETS: ara-s3-bucket
MINIO_ROOT_USER: ara-s3-user
MINIO_ROOT_PASSWORD: ara-s3-password
MINIO_FORCE_NEW_KEYS: yes
volumes:
- 'minio:/bitnami/minio/data'

fake-smtp:
image: haravich/fake-smtp-server
restart: always
ports:
- "1025:1025"
- "8901:1080"

volumes:
minio:
driver: local
3 changes: 2 additions & 1 deletion confiture-rest-api/src/audits/file-storage.service.ts
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,8 @@ export class FileStorageService {
credentials: {
accessKeyId: config.get("AWS_ACCESS_KEY_ID"),
secretAccessKey: config.get("AWS_SECRET_ACCESS_KEY")
}
},
forcePathStyle: true
});
}

Expand Down
4 changes: 2 additions & 2 deletions confiture-rest-api/src/config-validation-schema.ts
Original file line number Diff line number Diff line change
Expand Up @@ -25,12 +25,12 @@ export const configValidationSchema = Joi.object({
AIRTABLE_ACCESS_TOKEN: Joi.string().required(),

S3_ENDPOINT: Joi.string()
.uri({ scheme: ["https"] })
.uri({ scheme: ["https", "http"] })
.required(),
S3_REGION: Joi.string().required(),
S3_BUCKET: Joi.string().required(),
S3_VIRTUAL_HOST: Joi.string()
.uri({ scheme: ["https"] })
.uri({ scheme: ["https", "http"] })
.required(),
AWS_ACCESS_KEY_ID: Joi.string().required(),
AWS_SECRET_ACCESS_KEY: Joi.string().required(),
Expand Down

0 comments on commit 28d4dbc

Please sign in to comment.