0
Fork 0
mirror of https://github.com/TryGhost/Ghost.git synced 2024-12-30 22:34:01 -05:00

Consolidated compose.yml files for Dev Container (#21659)

ref
https://linear.app/ghost/issue/ENG-1785/consolidate-dev-container-composeyml-with-the-root-level-composeyml

- We currently have two compose.yml files:
    - `.devcontainer/compose.yml`: used for the Dev Container
    - `compose.yml`: used for local development with docker compose
- The Dev Container compose file does need some additional
configuration, but most of this code is duplicated from the root level
compose.yml file
- This commit removes this duplication by using both compose files in
the Dev Container setup, so it will base the compose configuration on
the root level, and then extend it with the Dev Container specific
configuration
- This way any updates to the root level compose file will also be
available and reflected in the Dev Container setup without having to
make the change twice.
This commit is contained in:
Chris Raible 2024-12-17 15:57:02 -05:00 committed by GitHub
parent 58ac19ada6
commit cabee005f4
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
3 changed files with 19 additions and 26 deletions

View file

@ -11,6 +11,8 @@ services:
context: ../
dockerfile: .docker/Dockerfile
target: base-devcontainer
args:
WORKDIR: /workspaces/ghost
pull_policy: never
environment:
- DEVCONTAINER=true
@ -21,30 +23,15 @@ services:
redis:
condition: service_healthy
mysql:
image: mysql:8.0.35
# We'll need to look into how we can further fine tune the memory usage/performance here
command: --innodb-buffer-pool-size=1G --innodb-log-buffer-size=500M --innodb-change-buffer-max-size=50 --innodb-flush-log-at-trx_commit=0 --innodb-flush-method=O_DIRECT
ports:
- "3306"
environment:
MYSQL_ROOT_PASSWORD: root
MYSQL_DATABASE: ghost
restart: always
volumes:
- mysql-data:/var/lib/mysql
healthcheck:
test: "mysql -uroot -proot ghost -e 'select 1'"
interval: 1s
retries: 120
extends:
file: ../compose.yml
service: mysql
container_name: ghost-devcontainer-mysql
redis:
image: redis:7.0
ports:
- "6379"
restart: always
healthcheck:
test: [ "CMD", "redis-cli", "--raw", "incr", "ping" ]
interval: 1s
retries: 120
extends:
file: ../compose.yml
service: redis
container_name: ghost-devcontainer-redis
volumes:
mysql-data:
mysql-data:

View file

@ -1,4 +1,6 @@
ARG NODE_VERSION=20.15.1
ARG WORKDIR=/home/ghost
## Base Image used for all targets
FROM node:$NODE_VERSION-bullseye-slim AS base
RUN apt-get update && \
@ -45,14 +47,14 @@ EXPOSE 7174
### This is a full devcontainer with all the code and dependencies installed
### Useful in an environment like Github Codespaces where you don't mount your local code into the container
FROM base-devcontainer AS full-devcontainer
WORKDIR /workspaces/ghost
WORKDIR $WORKDIR
COPY ../../ .
RUN yarn install --frozen-lockfile --prefer-offline --cache-folder $YARN_CACHE_FOLDER
# Development Stage: alternative entrypoint for development with some caching optimizations
FROM base-devcontainer AS development
WORKDIR /workspaces/ghost
WORKDIR $WORKDIR
COPY ../../ .

View file

@ -26,6 +26,10 @@ services:
ports:
- "6379:6379"
restart: always
healthcheck:
test: [ "CMD", "redis-cli", "--raw", "incr", "ping" ]
interval: 1s
retries: 120
prometheus:
profiles: [monitoring]
image: prom/prometheus:v2.30.3