Closed foorschtbar closed 3 years ago
Daybreak is just a regular laravel application. There are some tutorials in the internet which describe the deployment without using sail: https://www.digitalocean.com/community/tutorials/how-to-install-and-set-up-laravel-with-docker-compose-on-ubuntu-20-04 Additional you could look into the source code of sail itself which Dockerfiles are being used: https://github.com/laravel/sail/tree/1.x/runtimes/8.0 Hope this helps!
For other user with the same quest, here is my working Dockerfile:
FROM php:7.4-cli
# Arguments defined in docker-compose.yml
ARG user
ARG uid
# update image
RUN set -eux; \
apt-get update; \
apt-get upgrade -y --with-new-pkgs; \
apt-get install -y --no-install-recommends \
libmcrypt-dev \
libonig-dev \
git \
curl \
libpng-dev \
libonig-dev \
libxml2-dev \
zip \
unzip
# Clear cache
RUN apt-get clean && rm -rf /var/lib/apt/lists/*
# Install PHP extensions
RUN docker-php-ext-install pdo_mysql mbstring exif pcntl bcmath gd
# Get latest Composer
COPY --from=composer:latest /usr/bin/composer /usr/bin/composer
# Create system user to run Composer and Artisan Commands
RUN useradd -G www-data,root -u $uid -d /home/$user $user
RUN mkdir -p /home/$user/.composer && \
chown -R $user:$user /home/$user
# Set working directory
WORKDIR /daybreak
RUN git clone https://github.com/eporsche/daybreak.git /daybreak
RUN composer install
RUN chown -R $user:$user /daybreak
USER $user
EXPOSE 8000
CMD php artisan migrate && php artisan serve --host=0.0.0.0 --port=8000
and a docker-compose example:
version: "3"
services:
app:
build:
context: ./
dockerfile: Dockerfile
args:
user: daybreak
uid: 1000
restart: unless-stopped
container_name: daybreak-app
volumes:
- ./.env:/daybreak/.env
- ./data/app/logs:/daybreak/storage/logs
networks:
- internal
- reverse-proxy
depends_on:
- db
- redis
db:
image: mariadb:10.5
restart: unless-stopped
container_name: daybreak-db
volumes:
- ./data/db:/var/lib/mysql
environment:
- MYSQL_ROOT_PASSWORD=${DB_PASSWORD}
- MYSQL_PASSWORD=${DB_PASSWORD}
- MYSQL_DATABASE=${DB_DATABASE}
- MYSQL_USER=${DB_USERNAME}
networks:
- internal
redis:
image: "redis:alpine"
restart: unless-stopped
container_name: daybreak-redis
ports:
- "${REDIS_PORT}:6379"
networks:
- internal
mail:
image: bytemark/smtp
restart: unless-stopped
container_name: daybreak-mail
networks:
- internal
networks:
internal:
external: false
reverse-proxy:
external: true
I found this great project, but unfortunately I can't get it to run. I would like to run it as a Docker container, but I have seen that daybreak uses docker itself - because of sail. Is there any way to run it inside a Docker container? I'm not a fan of building a Docker container with Docker in it....