Skip to content

Commit

Permalink
Merge pull request #2 from tiangolo/master
Browse files Browse the repository at this point in the history
Aligning with tiangolo master
  • Loading branch information
ebreton authored May 3, 2019
2 parents 059046b + 5216fcf commit 900a278
Show file tree
Hide file tree
Showing 3 changed files with 31 additions and 11 deletions.
4 changes: 4 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -148,6 +148,10 @@ After using this generator, your new project (the directory created) will contai

### Next release

* Fix locations of scripts in generated README. PR [#19](https://github.com/tiangolo/full-stack-fastapi-postgresql/pull/19) by [@ebreton](https://github.com/ebreton).

* Forward arguments from script to `pytest` inside container. PR [#17](https://github.com/tiangolo/full-stack-fastapi-postgresql/pull/17) by [@ebreton](https://github.com/ebreton).

* Update development scripts.

* Read Alembic configs from env vars. PR <a href="https://github.com/tiangolo/full-stack-fastapi-postgresql/pull/9" target="_blank">#9</a> by <a href="https://github.com/ebreton" target="_blank">@ebreton</a>.
Expand Down
36 changes: 26 additions & 10 deletions {{cookiecutter.project_slug}}/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -123,17 +123,33 @@ Nevertheless, if it doesn't detect a change but a syntax error, it will just sto
To test the backend run:

```bash
DOMAIN=backend sh ./script-test.sh
DOMAIN=backend sh ./scripts/test.sh
```

The file `./script-test.sh` has the commands to generate a testing `docker-stack.yml` file from the needed Docker Compose files, start the stack and test it.
The file `./scripts/test.sh` has the commands to generate a testing `docker-stack.yml` file from the needed Docker Compose files, start the stack and test it.

The tests run with Pytest, modify and add tests to `./backend/app/app/tests/`.

If you need to install any additional package for the tests, add it to the file `./backend/app/tests.dockerfile`.

If you use GitLab CI the tests will run automatically.

#### Test running stack

If your stack is already up and you just want to run the tests, you can use:

```bash
docker-compose exec backend-tests /tests-start.sh
```

That `/tests-start.sh` script inside the `backend-tests` container calls `pytest`. If you need to pass extra arguments to `pytest`, you can pass them to that command and they will be forwarded.

For example, to stop on first error:

```bash
docker-compose exec backend-tests /tests-start.sh -x
```

### Live development with Python Jupyter Notebooks

If you know about Python [Jupyter Notebooks](http://jupyter.org/), you can take advantage of them during local development.
Expand Down Expand Up @@ -384,7 +400,7 @@ Then you need to have those constraints in your deployment Docker Compose file f
To be able to use different environments, like `prod` and `stag`, you should pass the name of the stack as an environment variable. Like:

```bash
STACK_NAME={{cookiecutter.docker_swarm_stack_name_staging}} sh ./script-deploy.sh
STACK_NAME={{cookiecutter.docker_swarm_stack_name_staging}} sh ./scripts/deploy.sh
```

To use and expand that environment variable inside the `docker-compose.deploy.volumes-placement.yml` files you can add the constraints to the services like:
Expand All @@ -401,7 +417,7 @@ services:
- node.labels.${STACK_NAME}.app-db-data == true
```
note the `${STACK_NAME}`. In the script `./script-deploy.sh`, that `docker-compose.deploy.volumes-placement.yml` would be converted, and saved to a file `docker-stack.yml` containing:
note the `${STACK_NAME}`. In the script `./scripts/deploy.sh`, that `docker-compose.deploy.volumes-placement.yml` would be converted, and saved to a file `docker-stack.yml` containing:

```yaml
version: '3'
Expand Down Expand Up @@ -490,10 +506,10 @@ Here are the steps in detail:
* Set these environment variables, prepended to the next command:
* `TAG=prod`
* `FRONTEND_ENV=production`
* Use the provided `script-build.sh` file with those environment variables:
* Use the provided `scripts/build.sh` file with those environment variables:

```bash
TAG=prod FRONTEND_ENV=production bash ./script-build.sh
TAG=prod FRONTEND_ENV=production bash ./scripts/build.sh
```

2. **Optionally, push your images to a Docker Registry**
Expand All @@ -505,10 +521,10 @@ If you are using a registry and pushing your images, you can omit running the pr
* Set these environment variables:
* `TAG=prod`
* `FRONTEND_ENV=production`
* Use the provided `script-build-push.sh` file with those environment variables:
* Use the provided `scripts/build-push.sh` file with those environment variables:

```bash
TAG=prod FRONTEND_ENV=production bash ./script-build.sh
TAG=prod FRONTEND_ENV=production bash ./scripts/build-push.sh
```

3. **Deploy your stack**
Expand All @@ -518,14 +534,14 @@ TAG=prod FRONTEND_ENV=production bash ./script-build.sh
* `TRAEFIK_TAG={{cookiecutter.traefik_constraint_tag}}`
* `STACK_NAME={{cookiecutter.docker_swarm_stack_name_main}}`
* `TAG=prod`
* Use the provided `script-deploy.sh` file with those environment variables:
* Use the provided `scripts/deploy.sh` file with those environment variables:

```bash
DOMAIN={{cookiecutter.domain_main}} \
TRAEFIK_TAG={{cookiecutter.traefik_constraint_tag}} \
STACK_NAME={{cookiecutter.docker_swarm_stack_name_main}} \
TAG=prod \
bash ./script-deploy.sh
bash ./scripts/deploy.sh
```

---
Expand Down
2 changes: 1 addition & 1 deletion {{cookiecutter.project_slug}}/backend/app/tests-start.sh
Original file line number Diff line number Diff line change
Expand Up @@ -3,4 +3,4 @@ set -e

python /app/app/tests_pre_start.py

pytest /app/app/tests/
pytest $* /app/app/tests/

0 comments on commit 900a278

Please sign in to comment.