build(devcontainer): move dev docker files to .devcontainer and set dev environment in app service

- add mailpit service to debug email
- remove s3 service
This commit is contained in:
Yassine Doghri 2024-03-28 12:04:12 +00:00
parent 9d7d11cefa
commit 13db54ccce
7 changed files with 85 additions and 104 deletions

View File

@ -8,9 +8,6 @@ FROM php:8.1-fpm
LABEL maintainer="Yassine Doghri <yassine@doghri.fr>"
COPY . /castopod
WORKDIR /castopod
# Install composer
COPY --from=composer:2 /usr/bin/composer /usr/bin/composer

1
.devcontainer/crontab Normal file
View File

@ -0,0 +1 @@
* * * * * /usr/local/bin/php /workspaces/castopod/spark tasks:run >> /dev/null 2>&1

View File

@ -1,13 +1,13 @@
// For format details, see https://aka.ms/vscode-remote/devcontainer.json or this file's README at:
// https://github.com/microsoft/vscode-dev-containers/tree/v0.117.1/containers/docker-existing-dockerfile
{
"name": "Castopod dev",
"dockerComposeFile": ["../docker-compose.yml", "./docker-compose.yml"],
"name": "castopod.local",
"dockerComposeFile": ["./docker-compose.yml"],
"service": "app",
"workspaceFolder": "/castopod",
"workspaceFolder": "/workspaces/${localWorkspaceFolderBasename}",
"postCreateCommand": "composer install && pnpm install && pnpm run build:static && php spark migrate --all && php spark db:seed DevSeeder",
"postStartCommand": "crontab ./crontab && cron && php spark serve --host 0.0.0.0",
"postAttachCommand": "crontab ./crontab && service cron reload",
"postStartCommand": "git config --global --add safe.directory ${containerWorkspaceFolder} && crontab .devcontainer/crontab && cron && php spark serve --host 0.0.0.0",
"postAttachCommand": "crontab .devcontainer/crontab && service cron reload",
"shutdownAction": "stopCompose",
"features": {
"ghcr.io/devcontainers/features/git:1": {},

View File

@ -1,10 +1,84 @@
version: "3"
services:
app:
build:
context: .
dockerfile: Dockerfile
ports:
- 8080:8080
volumes:
# Mounts the project folder to '/workspace'. While this file is in .devcontainer,
# mounts are relative to the first file in the list, which is a level up.
- .:/castopod:cached
- ../..:/workspaces:cached
environment:
CI_ENVIRONMENT: development
vite_environment: development
app_forceGlobalSecureRequests: false
app_baseURL: http://localhost:8080/
media_baseURL: http://localhost:8080/
admin_gateway: cp-admin
auth_gateway: cp-auth
analytics_salt: dev_analytics_salt
database_default_hostname: mariadb
database_default_database: castopod
database_default_username: castopod
database_default_password: castopod
database_default_DBPrefix: cp_
restapi_enabled: true
email_fromEmail: hello@castopod.local
email_SMTPCrypto: ""
email_SMTPHost: mailpit
email_SMTPUser: castopod
email_SMTPPass: castopod
email_SMTPPort: 1025
depends_on:
- redis
- mariadb
# Overrides default command so things don't shut down after the process ends.
command: /bin/sh -c "while sleep 1000; do :; done"
redis:
image: redis:alpine
volumes:
- redis:/data
mariadb:
image: mariadb:10.2
volumes:
- ./initdb:/docker-entrypoint-initdb.d
- mariadb:/var/lib/mysql
environment:
MYSQL_ROOT_PASSWORD: root
MYSQL_DATABASE: castopod
MYSQL_USER: castopod
MYSQL_PASSWORD: castopod
phpmyadmin:
image: phpmyadmin/phpmyadmin:latest
environment:
PMA_HOST: mariadb
PMA_PORT: 3306
UPLOAD_LIMIT: 300M
ports:
- 8888:80
volumes:
- phpmyadmin:/sessions
depends_on:
- mariadb
mailpit:
image: axllent/mailpit
restart: always
volumes:
- mailpit:/data
ports:
- 8025:8025
- 1025:1025
environment:
MP_MAX_MESSAGES: 5000
MP_DATA_FILE: /data/mailpit.db
MP_SMTP_AUTH_ACCEPT_ANY: 1
MP_SMTP_AUTH_ALLOW_INSECURE: 1
volumes:
redis:
mariadb:
phpmyadmin:
mailpit:

View File

@ -1 +0,0 @@
* * * * * /usr/local/bin/php /castopod/spark tasks:run >> /dev/null 2>&1

View File

@ -1,90 +0,0 @@
version: "3.8"
networks:
castopod:
ipam:
config:
- subnet: 172.31.0.0/24
services:
app:
build:
context: .
dockerfile: docker/development/Dockerfile
container_name: app
command: /bin/sh -c "crontab ./crontab && cron && service cron reload && php spark serve --host 0.0.0.0"
ports:
- 8080:8080
volumes:
- .:/castopod
depends_on:
- redis
- mariadb
networks:
castopod:
ipv4_address: 172.31.0.2
redis:
image: redis:alpine
container_name: castopod_redis
ports:
- 6379:6379
volumes:
- redis:/data
networks:
castopod:
ipv4_address: 172.31.0.3
mariadb:
image: mariadb:10.2
container_name: castopod_mariadb
ports:
- 3306:3306
volumes:
- ./initdb:/docker-entrypoint-initdb.d
- mariadb:/var/lib/mysql
environment:
MYSQL_ROOT_PASSWORD: root
MYSQL_DATABASE: castopod
MYSQL_USER: castopod
MYSQL_PASSWORD: castopod
networks:
castopod:
ipv4_address: 172.31.0.4
phpmyadmin:
image: phpmyadmin/phpmyadmin:latest
container_name: castopod_phpmyadmin
environment:
PMA_HOST: mariadb
PMA_PORT: 3306
UPLOAD_LIMIT: 300M
ports:
- 8888:80
volumes:
- phpmyadmin:/sessions
depends_on:
- mariadb
networks:
castopod:
ipv4_address: 172.31.0.5
s3:
image: adobe/s3mock:latest
container_name: castopod_s3
environment:
- initialBuckets=castopod
- debug=true
- root=/data
ports:
- 9090:9090
volumes:
- ./data/s3:/data:cached
networks:
castopod:
ipv4_address: 172.31.0.6
volumes:
redis:
mariadb:
phpmyadmin: