Skip to content

Commit d5afca0

Browse files
authored
Local development env updates (alexjustesen#416)
1 parent a7347c1 commit d5afca0

File tree

8 files changed

+150
-75
lines changed

8 files changed

+150
-75
lines changed

docker-compose.yml

Lines changed: 33 additions & 51 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,3 @@
1-
# For more information: https://laravel.com/docs/sail
21
version: '3'
32
services:
43
laravel.test:
@@ -23,59 +22,42 @@ services:
2322
networks:
2423
- sail
2524
depends_on:
26-
# - mysql
27-
# - pgsql
28-
- mailhog
29-
# mysql:
30-
# image: 'mysql/mysql-server:8.0'
31-
# ports:
32-
# - '${FORWARD_DB_PORT:-3306}:3306'
33-
# environment:
34-
# MYSQL_ROOT_PASSWORD: '${DB_PASSWORD}'
35-
# MYSQL_ROOT_HOST: "%"
36-
# MYSQL_DATABASE: '${DB_DATABASE}'
37-
# MYSQL_USER: '${DB_USERNAME}'
38-
# MYSQL_PASSWORD: '${DB_PASSWORD}'
39-
# MYSQL_ALLOW_EMPTY_PASSWORD: 1
40-
# volumes:
41-
# - 'sail-mysql:/var/lib/mysql'
42-
# - './vendor/laravel/sail/database/mysql/create-testing-database.sh:/docker-entrypoint-initdb.d/10-create-testing-database.sh'
43-
# networks:
44-
# - sail
45-
# healthcheck:
46-
# test: ["CMD", "mysqladmin", "ping", "-p${DB_PASSWORD}"]
47-
# retries: 3
48-
# timeout: 5s
49-
# pgsql:
50-
# image: 'postgres:14'
51-
# ports:
52-
# - '${FORWARD_DB_PORT:-5432}:5432'
53-
# environment:
54-
# PGPASSWORD: '${DB_PASSWORD:-secret}'
55-
# POSTGRES_DB: '${DB_DATABASE}'
56-
# POSTGRES_USER: '${DB_USERNAME}'
57-
# POSTGRES_PASSWORD: '${DB_PASSWORD:-secret}'
58-
# volumes:
59-
# - 'sail-pgsql:/var/lib/postgresql/data'
60-
# - './vendor/laravel/sail/database/pgsql/create-testing-database.sql:/docker-entrypoint-initdb.d/10-create-testing-database.sql'
61-
# networks:
62-
# - sail
63-
# healthcheck:
64-
# test: ["CMD", "pg_isready", "-q", "-d", "${DB_DATABASE}", "-U", "${DB_USERNAME}"]
65-
# retries: 3
66-
# timeout: 5s
67-
mailhog:
68-
image: 'mailhog/mailhog:latest'
25+
- mysql
26+
- mailpit
27+
mysql:
28+
image: 'mysql/mysql-server:8.0'
6929
ports:
70-
- '${FORWARD_MAILHOG_PORT:-1025}:1025'
71-
- '${FORWARD_MAILHOG_DASHBOARD_PORT:-8025}:8025'
30+
- '${FORWARD_DB_PORT:-3306}:3306'
31+
environment:
32+
MYSQL_ROOT_PASSWORD: '${DB_PASSWORD}'
33+
MYSQL_ROOT_HOST: '%'
34+
MYSQL_DATABASE: '${DB_DATABASE}'
35+
MYSQL_USER: '${DB_USERNAME}'
36+
MYSQL_PASSWORD: '${DB_PASSWORD}'
37+
MYSQL_ALLOW_EMPTY_PASSWORD: 1
38+
volumes:
39+
- 'sail-mysql:/var/lib/mysql'
40+
- './vendor/laravel/sail/database/mysql/create-testing-database.sh:/docker-entrypoint-initdb.d/10-create-testing-database.sh'
41+
networks:
42+
- sail
43+
healthcheck:
44+
test:
45+
- CMD
46+
- mysqladmin
47+
- ping
48+
- '-p${DB_PASSWORD}'
49+
retries: 3
50+
timeout: 5s
51+
mailpit:
52+
image: 'axllent/mailpit:latest'
53+
ports:
54+
- '${FORWARD_MAILPIT_PORT:-1025}:1025'
55+
- '${FORWARD_MAILPIT_DASHBOARD_PORT:-8025}:8025'
7256
networks:
7357
- sail
7458
networks:
7559
sail:
7660
driver: bridge
77-
# volumes:
78-
# sail-mysql:
79-
# driver: local
80-
# sail-pgsql:
81-
# driver: local
61+
volumes:
62+
sail-mysql:
63+
driver: local

docker/8.1/Dockerfile

Lines changed: 14 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
FROM ubuntu:22.04
22

3-
LABEL maintainer="Alexander Justesen"
3+
LABEL maintainer="Alex Justesen"
44

55
ARG WWWGROUP
66
ARG NODE_VERSION=18
@@ -14,51 +14,45 @@ ENV TZ=UTC
1414
RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone
1515

1616
RUN apt-get update \
17-
&& apt-get install -y gnupg gosu curl ca-certificates zip unzip git supervisor sqlite3 libcap2-bin libpng-dev python2 cron \
17+
&& apt-get install -y gnupg gosu curl ca-certificates zip unzip git supervisor sqlite3 libcap2-bin libpng-dev python2 dnsutils cron \
1818
&& curl -sS 'https://keyserver.ubuntu.com/pks/lookup?op=get&search=0x14aa40ec0831756756d7f66c4f4ea0aae5267a6c' | gpg --dearmor | tee /usr/share/keyrings/ppa_ondrej_php.gpg > /dev/null \
1919
&& echo "deb [signed-by=/usr/share/keyrings/ppa_ondrej_php.gpg] https://ppa.launchpadcontent.net/ondrej/php/ubuntu jammy main" > /etc/apt/sources.list.d/ppa_ondrej_php.list \
2020
&& apt-get update \
2121
&& apt-get install -y php8.1-cli php8.1-dev \
22-
php8.1-pgsql php8.1-sqlite3 php8.1-gd \
22+
php8.1-pgsql php8.1-sqlite3 \
2323
php8.1-curl \
24-
php8.1-imap php8.1-mysql php8.1-mbstring \
24+
php8.1-mysql php8.1-mbstring \
2525
php8.1-xml php8.1-zip php8.1-bcmath php8.1-soap \
2626
php8.1-intl php8.1-readline \
27-
php8.1-ldap \
28-
php8.1-msgpack php8.1-igbinary php8.1-redis php8.1-swoole \
29-
php8.1-memcached php8.1-pcov php8.1-xdebug \
30-
&& php -r "readfile('https://getcomposer.org/installer');" | php -- --install-dir=/usr/bin/ --filename=composer \
27+
php8.1-msgpack php8.1-igbinary php8.1-redis \
28+
php8.1-memcached php8.1-pcov php8.1-xdebug
29+
30+
RUN php -r "readfile('https://getcomposer.org/installer');" | php -- --install-dir=/usr/bin/ --filename=composer \
3131
&& curl -sLS https://deb.nodesource.com/setup_$NODE_VERSION.x | bash - \
3232
&& apt-get install -y nodejs \
3333
&& npm install -g npm \
34-
# && curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | gpg --dearmor | tee /usr/share/keyrings/yarn.gpg >/dev/null \
35-
# && echo "deb [signed-by=/usr/share/keyrings/yarn.gpg] https://dl.yarnpkg.com/debian/ stable main" > /etc/apt/sources.list.d/yarn.list \
3634
&& curl -sS https://www.postgresql.org/media/keys/ACCC4CF8.asc | gpg --dearmor | tee /usr/share/keyrings/pgdg.gpg >/dev/null \
3735
&& echo "deb [signed-by=/usr/share/keyrings/pgdg.gpg] http://apt.postgresql.org/pub/repos/apt jammy-pgdg main" > /etc/apt/sources.list.d/pgdg.list \
3836
&& apt-get update \
39-
# && apt-get install -y yarn \
4037
&& apt-get install -y mysql-client \
4138
&& apt-get install -y postgresql-client-$POSTGRES_VERSION \
39+
&& curl -s https://packagecloud.io/install/repositories/ookla/speedtest-cli/script.deb.sh | bash \
40+
&& apt-get update \
41+
&& apt-get install -y speedtest \
4242
&& apt-get -y autoremove \
4343
&& apt-get clean \
44-
&& rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/*
45-
46-
RUN curl -s https://packagecloud.io/install/repositories/ookla/speedtest-cli/script.deb.sh | bash \
47-
&& apt-get install -y speedtest
44+
&& rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/* \
45+
&& echo "MAILTO=\"\"\n* * * * * sail /usr/bin/php /var/www/html/artisan schedule:run" > /etc/cron.d/laravel
4846

4947
RUN setcap "cap_net_bind_service=+ep" /usr/bin/php8.1
5048

5149
RUN groupadd --force -g $WWWGROUP sail
5250
RUN useradd -ms /bin/bash --no-user-group -g $WWWGROUP -u 1337 sail
5351

54-
COPY cron/scheduler /etc/cron.d/scheduler
5552
COPY start-container /usr/local/bin/start-container
5653
COPY supervisord.conf /etc/supervisor/conf.d/supervisord.conf
5754
COPY php.ini /etc/php/8.1/cli/conf.d/99-sail.ini
58-
59-
RUN chmod 0644 /etc/cron.d/scheduler \
60-
&& crontab /etc/cron.d/scheduler \
61-
&& chmod +x /usr/local/bin/start-container
55+
RUN chmod +x /usr/local/bin/start-container
6256

6357
EXPOSE 8000
6458

docker/8.1/cron/scheduler

Lines changed: 0 additions & 2 deletions
This file was deleted.

docker/8.1/php.ini

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
11
[PHP]
2-
post_max_size = 200M
3-
upload_max_filesize = 200M
2+
post_max_size = 100M
3+
upload_max_filesize = 100M
44
variables_order = EGPCS

docker/8.2/Dockerfile

Lines changed: 59 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,59 @@
1+
FROM ubuntu:22.04
2+
3+
LABEL maintainer="Alex Justesen"
4+
5+
ARG WWWGROUP
6+
ARG NODE_VERSION=18
7+
ARG POSTGRES_VERSION=14
8+
9+
WORKDIR /var/www/html
10+
11+
ENV DEBIAN_FRONTEND noninteractive
12+
ENV TZ=UTC
13+
14+
RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone
15+
16+
RUN apt-get update \
17+
&& apt-get install -y gnupg gosu curl ca-certificates zip unzip git supervisor sqlite3 libcap2-bin libpng-dev python2 dnsutils cron \
18+
&& curl -sS 'https://keyserver.ubuntu.com/pks/lookup?op=get&search=0x14aa40ec0831756756d7f66c4f4ea0aae5267a6c' | gpg --dearmor | tee /usr/share/keyrings/ppa_ondrej_php.gpg > /dev/null \
19+
&& echo "deb [signed-by=/usr/share/keyrings/ppa_ondrej_php.gpg] https://ppa.launchpadcontent.net/ondrej/php/ubuntu jammy main" > /etc/apt/sources.list.d/ppa_ondrej_php.list \
20+
&& apt-get update \
21+
&& apt-get install -y php8.2-cli php8.2-dev \
22+
php8.2-pgsql php8.2-sqlite3 \
23+
php8.2-curl \
24+
php8.2-mysql php8.2-mbstring \
25+
php8.2-xml php8.2-zip php8.2-bcmath php8.2-soap \
26+
php8.2-intl php8.2-readline \
27+
php8.2-msgpack php8.2-igbinary php8.2-redis \
28+
php8.2-memcached php8.2-pcov php8.2-xdebug
29+
30+
RUN php -r "readfile('https://getcomposer.org/installer');" | php -- --install-dir=/usr/bin/ --filename=composer \
31+
&& curl -sLS https://deb.nodesource.com/setup_$NODE_VERSION.x | bash - \
32+
&& apt-get install -y nodejs \
33+
&& npm install -g npm \
34+
&& curl -sS https://www.postgresql.org/media/keys/ACCC4CF8.asc | gpg --dearmor | tee /usr/share/keyrings/pgdg.gpg >/dev/null \
35+
&& echo "deb [signed-by=/usr/share/keyrings/pgdg.gpg] http://apt.postgresql.org/pub/repos/apt jammy-pgdg main" > /etc/apt/sources.list.d/pgdg.list \
36+
&& apt-get update \
37+
&& apt-get install -y mysql-client \
38+
&& apt-get install -y postgresql-client-$POSTGRES_VERSION \
39+
&& curl -s https://packagecloud.io/install/repositories/ookla/speedtest-cli/script.deb.sh | bash \
40+
&& apt-get update \
41+
&& apt-get install -y speedtest \
42+
&& apt-get -y autoremove \
43+
&& apt-get clean \
44+
&& rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/* \
45+
&& echo "MAILTO=\"\"\n* * * * * sail /usr/bin/php /var/www/html/artisan schedule:run" > /etc/cron.d/laravel
46+
47+
RUN setcap "cap_net_bind_service=+ep" /usr/bin/php8.2
48+
49+
RUN groupadd --force -g $WWWGROUP sail
50+
RUN useradd -ms /bin/bash --no-user-group -g $WWWGROUP -u 1337 sail
51+
52+
COPY start-container /usr/local/bin/start-container
53+
COPY supervisord.conf /etc/supervisor/conf.d/supervisord.conf
54+
COPY php.ini /etc/php/8.2/cli/conf.d/99-sail.ini
55+
RUN chmod +x /usr/local/bin/start-container
56+
57+
EXPOSE 8000
58+
59+
ENTRYPOINT ["start-container"]

docker/8.2/php.ini

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
[PHP]
2+
post_max_size = 100M
3+
upload_max_filesize = 100M
4+
variables_order = EGPCS

docker/8.2/start-container

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
#!/usr/bin/env bash
2+
3+
if [ ! -z "$WWWUSER" ]; then
4+
usermod -u $WWWUSER sail
5+
fi
6+
7+
if [ ! -d /.composer ]; then
8+
mkdir /.composer
9+
fi
10+
11+
chmod -R ugo+rw /.composer
12+
13+
if [ $# -gt 0 ]; then
14+
exec gosu $WWWUSER "$@"
15+
else
16+
exec /usr/bin/supervisord -c /etc/supervisor/conf.d/supervisord.conf
17+
fi

docker/8.2/supervisord.conf

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
[supervisord]
2+
nodaemon=true
3+
user=root
4+
logfile=/var/log/supervisor/supervisord.log
5+
pidfile=/var/run/supervisord.pid
6+
7+
[program:cron]
8+
command=/usr/sbin/cron -f -l 8
9+
user=root
10+
autostart=true
11+
stdout_logfile=/var/log/cron.out.log
12+
stderr_logfile=/var/log/cron.err.log
13+
14+
[program:php]
15+
command=/usr/bin/php -d variables_order=EGPCS /var/www/html/artisan serve --host=0.0.0.0 --port=80
16+
user=sail
17+
environment=LARAVEL_SAIL="1"
18+
stdout_logfile=/dev/stdout
19+
stdout_logfile_maxbytes=0
20+
stderr_logfile=/dev/stderr
21+
stderr_logfile_maxbytes=0

0 commit comments

Comments
 (0)