Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Modernize docker compose #71

Open
wants to merge 4 commits into
base: main
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .devcontainer/devcontainer.json
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
{
"name": "Existing Docker Compose (Extend)",
"dockerComposeFile": [
"../docker-compose.yml",
"../compose.yml",
"docker-compose.yml"
],
"service": "web",
Expand Down
2 changes: 1 addition & 1 deletion .devcontainer/docker-compose.yml
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
services:
web:
volumes:
- ./.vscode:/code/.vscode:delegated,rw
- ./.vscode:/code/.vscode

# Overrides default command so things don't shut down after the process ends.
command: /bin/sh -c "while sleep 1000; do :; done"
6 changes: 6 additions & 0 deletions .env.example
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
DATABASE_HOST=db
DATABASE_PORT=5432
DATABASE_NAME=app_db
DATABASE_USER=app_user
DATABASE_PASSWORD=changeme
DATABASE_URL=postgres://$DATABASE_USER:$DATABASE_PASSWORD@$DATABASE_HOST/$DATABASE_NAME
4 changes: 2 additions & 2 deletions .github/workflows/docker-image.yml
Original file line number Diff line number Diff line change
Expand Up @@ -13,8 +13,8 @@ jobs:
runs-on: ubuntu-latest

steps:
- uses: actions/checkout@v2
- uses: actions/checkout@v4
- name: Build the Docker image
run: |
./setup.sh
docker build . --file Dockerfile --tag docker-wagtail-develop:$(date +%s)
docker build . --file docker/app.Dockerfile --tag docker-wagtail-develop:$(date +%s)
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
wagtail
bakerydemo
libs
.env
.idea
.vscode
.DS_Store
28 changes: 0 additions & 28 deletions Dockerfile

This file was deleted.

7 changes: 0 additions & 7 deletions Dockerfile.frontend

This file was deleted.

34 changes: 17 additions & 17 deletions Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -8,46 +8,46 @@ help: ## ⁉️ - Display help comments for each make command
| sort

build: ## Build the backend Docker image
docker-compose build web
docker compose build app

start: ## Bring the backend Docker container up
docker-compose up
docker compose up

stop: ## Stop the backend Docker container
docker-compose stop
docker compose stop

ssh: ## Enter the running backend Docker container for the wagtail bakery site
docker-compose exec web bash
docker compose exec app bash

ssh-shell: ## Enter the running Docker container shell
docker-compose exec web python manage.py shell
docker compose exec app python manage.py shell

ssh-fe: ## Open a shell to work with the frontend code (Node/NPM)
docker-compose exec frontend bash
docker compose exec frontend bash

ssh-wagtail: ## Enter the running Docker container for the wagtail development environment
docker-compose exec -w /code/wagtail web bash
docker compose exec -w /code/wagtail app bash

ssh-db: ## Open a PostgreSQL shell session
docker-compose exec web python manage.py dbshell
docker compose exec app python manage.py dbshell

down: ## Stop and remove all Docker containers
docker-compose down
docker compose down

migrations: ## Make migrations to the wagtail bakery site
docker-compose exec web python manage.py makemigrations
docker compose exec app python manage.py makemigrations

migrate: ## Migrate the wagtail bakery site migrations
docker-compose exec web python manage.py migrate
docker compose exec app python manage.py migrate

test: ## Run all wagtail tests or pass in a file with `make test file=wagtail.admin.tests.test_name`
docker-compose exec -w /code/wagtail web python runtests.py $(file) $(FILE)
docker compose exec -w /code/wagtail app python runtests.py $(file) $(FILE)

format-wagtail: ## Format Wagtail repo
docker-compose exec -w /code/wagtail web make format-server
docker-compose exec frontend make format-client
docker compose exec -w /code/wagtail app make format-server
docker compose exec frontend make format-client

lint-wagtail: ## Lint the Wagtail repo (server, client, docs)
docker-compose exec -w /code/wagtail web make lint-server
docker-compose exec -w /code/wagtail web make lint-docs
docker-compose exec frontend make lint-client
docker compose exec -w /code/wagtail app make lint-server
docker compose exec -w /code/wagtail app make lint-docs
docker compose exec frontend make lint-client
65 changes: 31 additions & 34 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ Initial work in Bristol sprint January 2020 by [esperk](https://github.com/esper

## Setup

**Requirements:** [Docker](https://www.docker.com/) and Docker Compose (Docker Compose is included with Docker Desktop for Mac and Windows).
**Requirements:** [Docker](https://www.docker.com/) and Docker Compose version 2.22 and later (Docker Compose is included with Docker Desktop for Mac and Windows).

Open a terminal and follow those instructions:

Expand All @@ -20,7 +20,7 @@ cd wagtail-dev/
# 4. Run the setup script. This will check out the bakerydemo project and local copies of wagtail and its dependencies.
./setup.sh
# 5. Build the containers
docker-compose build
docker compose build
```

It can take a while (typically 15-20 minutes) to fetch and build all dependencies and containers.
Expand All @@ -38,10 +38,10 @@ Once the build is complete:

```sh
# 6. Start your containers and wait for them to finish their startup scripts.
docker-compose up
docker compose up
```

You might see a message like this the first time you run your containers. This is normal because the frontend container has not finished building the assets for the Wagtail admin. Just wait a few seconds for the frontend container to finish building (you should see a message like `webpack compiled successfully in 15557 ms` and then stop and start your containers again (Ctrl+C + `docker-compose up`).
You might see a message like this the first time you run your containers. This is normal because the frontend container has not finished building the assets for the Wagtail admin. Just wait a few seconds for the frontend container to finish building (you should see a message like `webpack compiled successfully in 15557 ms` and then stop and start your containers again (Ctrl+C + `docker compose up`).

````
WARNINGS:
Expand All @@ -64,7 +64,7 @@ WARNINGS:
If you're running this on Linux you might get into some privilege issues that can be solved using this command (tested on Ubuntu):

```sh
CURRENT_UID=$(id -u):$(id -g) docker-compose -f docker-compose.yml -f docker-compose.linux.yml up
CURRENT_UID=$(id -u):$(id -g) docker compose -f compose.yaml -f compose.linux.yaml up
```

Alternatively, if you're using VSCode and have the "Remote - Containers" extension, you can open the command palette and select "Remote Containers - Reopen in Container" to attach VSCode to the container. This allows for much deeper debugging.
Expand All @@ -77,12 +77,11 @@ Alternatively, if you're using VSCode and have the "Remote - Containers" extensi
### See a list of running containers

```sh
$ docker-compose ps
Name Command State Ports
--------------------------------------------------------------------------
db docker-entrypoint.sh postgres Up 5432/tcp
frontend docker-entrypoint.sh /bin/ ... Up
web ./manage.py runserver 0.0. ... Up 0.0.0.0:8000->8000/tcp
$ docker compose ps
NAME IMAGE COMMAND SERVICE CREATED STATUS PORTS
wagtail-dev-app-1 wagtail-dev-app "/bin/sh -c 'python …" app 10 minutes ago Up 10 minutes 0.0.0.0:8000->8000/tcp
wagtail-dev-db-1 postgres:16.0-bookworm "docker-entrypoint.s…" db 10 minutes ago Up 10 minutes (healthy) 5432/tcp
wagtail-dev-frontend-1 wagtail-dev-frontend "docker-entrypoint.s…" frontend 10 minutes ago Up 10 minutes
```

### Build the backend Docker image
Expand All @@ -94,7 +93,7 @@ make build
or

```sh
docker-compose build web
docker compose build app
```

### Bring the backend Docker container up
Expand All @@ -106,7 +105,7 @@ make start
or

```sh
docker-compose up
docker compose up
```

### Stop all Docker containers
Expand All @@ -118,7 +117,7 @@ make stop
or

```sh
docker-compose stop
docker compose stop
```

### Stop all and remove all Docker containers
Expand All @@ -130,7 +129,7 @@ make down
or

```sh
docker-compose down
docker compose down
```

### Run tests
Expand All @@ -142,7 +141,7 @@ make test
or

```sh
docker-compose exec -w /code/wagtail web python runtests.py
docker compose exec -w /code/wagtail app python runtests.py
```

### Run tests for a specific file
Expand All @@ -154,7 +153,7 @@ make test file=wagtail.admin.tests.test_name.py
or

```sh
docker-compose exec -w /code/wagtail web python runtests.py wagtail.admin.tests.{test_file_name_here}
docker compose exec -w /code/wagtail app python runtests.py wagtail.admin.tests.{test_file_name_here}
```

### Format Wagtail codebase
Expand All @@ -164,8 +163,8 @@ make format-wagtail
```
or
```sh
docker-compose exec -w /code/wagtail web make format-server
docker-compose exec frontend make format-client
docker compose exec -w /code/wagtail app make format-server
docker compose exec frontend make format-client
```

### Lint Wagtail codebase
Expand All @@ -175,9 +174,9 @@ make lint-wagtail
```
or
```sh
docker-compose exec -w /code/wagtail web make lint-server
docker-compose exec -w /code/wagtail web make lint-docs
docker-compose exec frontend make lint-client
docker compose exec -w /code/wagtail app make lint-server
docker compose exec -w /code/wagtail app make lint-docs
docker compose exec frontend make lint-client
```

### Open a Django shell session
Expand All @@ -189,7 +188,7 @@ make ssh-shell
or

```sh
docker-compose exec web python manage.py shell
docker compose exec app python manage.py shell
```

### Open a PostgreSQL shell session
Expand All @@ -201,7 +200,7 @@ make ssh-db
or

```sh
docker-compose exec web python manage.py dbshell
docker compose exec app python manage.py dbshell
```

### Open a shell on the web server
Expand All @@ -213,7 +212,7 @@ make ssh
or

```sh
docker-compose exec web bash
docker compose exec app bash
```

### Open a shell to work with the frontend code (Node/NPM)
Expand All @@ -225,7 +224,7 @@ make ssh-fe
or

```sh
docker-compose exec frontend bash
docker compose exec frontend bash
```

### Open a shell to work within the wagtail container
Expand All @@ -237,7 +236,7 @@ make ssh-fe
or

```sh
docker-compose exec -w /code/wagtail web bash
docker compose exec -w /code/wagtail app bash
```

### Make migrations to the wagtail bakery site
Expand All @@ -249,7 +248,7 @@ make migrations
or

```sh
docker-compose exec web python manage.py makemigrations
docker compose exec app python manage.py makemigrations
```

### Migrate the wagtail bakery site
Expand All @@ -261,14 +260,14 @@ make migrate
or

```sh
docker-compose exec web python manage.py migrate
docker compose exec app python manage.py migrate
```

## Getting ready to contribute

Here are other actions you will likely need to do to make your first contribution to Wagtail.

Set up git remotes to Wagtail forks (run these lines outside of the Docker instances, on your machine):
Set up git remotes to Wagtail forks (run these commands on your machine, not within Docker):

```sh
cd ~/Development/wagtail-dev/wagtail
Expand All @@ -280,10 +279,8 @@ git remote add upstream git@github.com:wagtail/wagtail.git
git pull --all
```

## Contributing to Willow

You can use the same setup to contribute to Willow.
You simply do the same operations to fork the Willow project and point your local copy of Willow to your fork.
You can use the same steps to contribute to any of the dependencies installed in `./libs`.
By default, `django-modelcluster` and `Willow` are checked out from `git` into this folder.

## See also

Expand Down
File renamed without changes.
Loading