Resolve "adapter le code pour s'exécuter dans le docker compose"
Closes #2 (closed)
Tests
- Export data de la table
events
de production:docker compose exec mobilizon-db psql -U mobilizon -d postgres_mobilizon -c "COPY (SELECT * FROM events) TO stdout DELIMITER ',' CSV HEADER" > events-export.csv
- Export du schema
docker compose exec mobilizon-db pg_dump -U mobilizon --schema-only postgres_mobilizon > schema.sql
- Import local avec un setup identique à la prod
for fichier in Dockerfile compose.yml crontab
do
echo "== $fichier =="
cat $fichier
done
== Dockerfile ==
FROM alpine:3.14
RUN apk add --no-cache postgresql-client
RUN apk add --no-cache bash
RUN apk add --no-cache curl
RUN apk add --no-cache jq
RUN apk add --no-cache tzdata
RUN apk add --no-cache coreutils
# Latest releases available at https://github.com/aptible/supercronic/releases
ENV SUPERCRONIC_URL=https://github.com/aptible/supercronic/releases/download/v0.2.29/supercronic-linux-amd64 \
SUPERCRONIC=supercronic-linux-amd64 \
SUPERCRONIC_SHA1SUM=cd48d45c4b10f3f0bfdd3a57d054cd05ac96812b
RUN curl -fsSLO "$SUPERCRONIC_URL" \
&& echo "${SUPERCRONIC_SHA1SUM} ${SUPERCRONIC}" | sha1sum -c - \
&& chmod +x "$SUPERCRONIC" \
&& mv "$SUPERCRONIC" "/usr/local/bin/${SUPERCRONIC}" \
&& ln -s "/usr/local/bin/${SUPERCRONIC}" /usr/local/bin/supercronic
COPY ./crontab /crontab
COPY . /app
== compose.yml ==
# inspired from https://framagit.org/framasoft/joinmobilizon/docker/-/blob/f658b1224270e0a52c7174bec923d048ed9ab21f/docker-compose.yml
version: "3.7"
networks:
mobilizon:
name: "mobilizon"
volumes:
mobilizon-db:
name: mobilizon-db
mobilizon-cron:
name: mobilizon-cron
services:
mobilizon-db:
image: postgis/postgis:12-3.1-alpine
container_name: mobilizon-db
volumes:
- mobilizon-db:/var/lib/postgresql/data
- /etc/localtime:/etc/localtime:ro
env_file:
- ./secrets/mobilizon-db.secrets
networks:
- mobilizon
restart: unless-stopped
mobilizon-cron:
build: .
command: /usr/local/bin/supercronic /crontab
container_name: mobilizon-cron
environment:
- MOBILIZON_DATABASE_HOST=mobilizon-db
env_file:
- ./secrets/mobilizon-db.secrets
- ./secrets/mobilizon-cron.secrets
networks:
- mobilizon
restart: unless-stopped
volumes:
- mobilizon-cron:/export-cron
- /etc/localtime:/etc/localtime:ro
== crontab ==
# Run 10 seconds
*/10 * * * * * * cd /app && bash ./main.sh
Edited by Gregory Loncle