Use best practices for Dockerfiles (#180)
This commit is contained in:
parent
bcbe60a8d8
commit
5cc50eb522
@ -13,7 +13,7 @@ RUN apt-get update \
|
|||||||
curl \
|
curl \
|
||||||
jq \
|
jq \
|
||||||
netcat \
|
netcat \
|
||||||
&& rm -rf /var/lib/apt/lists/*
|
&& rm -rf /var/lib/apt/lists/* /var/cache/apt/archives/*.deb /var/cache/apt/archives/partial/*.deb /var/cache/apt/*.bin
|
||||||
|
|
||||||
# Get Mattermost
|
# Get Mattermost
|
||||||
RUN mkdir -p /mattermost/data \
|
RUN mkdir -p /mattermost/data \
|
||||||
@ -22,15 +22,14 @@ RUN mkdir -p /mattermost/data \
|
|||||||
&& cp /mattermost/config/config.json /config.json.save \
|
&& cp /mattermost/config/config.json /config.json.save \
|
||||||
&& rm -rf /mattermost/config/config.json
|
&& rm -rf /mattermost/config/config.json
|
||||||
|
|
||||||
# Configure entrypoint
|
# Configure entrypoint and command
|
||||||
COPY docker-entry.sh /
|
COPY entrypoint.sh /
|
||||||
# Set permission (TODO should be removed and replace by a chmod on the file in the repository ?)
|
ENTRYPOINT ["/entrypoint.sh"]
|
||||||
RUN chmod +x /docker-entry.sh
|
|
||||||
ENTRYPOINT ["/docker-entry.sh"]
|
|
||||||
|
|
||||||
EXPOSE 80
|
|
||||||
|
|
||||||
VOLUME /mattermost/data
|
|
||||||
|
|
||||||
WORKDIR /mattermost/bin
|
WORKDIR /mattermost/bin
|
||||||
CMD ["platform"]
|
CMD ["platform"]
|
||||||
|
|
||||||
|
# Expose port 80 of the container
|
||||||
|
EXPOSE 80
|
||||||
|
|
||||||
|
# Use a volume for the data directory
|
||||||
|
VOLUME /mattermost/data
|
||||||
|
0
app/docker-entry.sh → app/entrypoint.sh
Normal file → Executable file
0
app/docker-entry.sh → app/entrypoint.sh
Normal file → Executable file
@ -1,18 +1,29 @@
|
|||||||
FROM postgres:9.4
|
FROM postgres:9.4
|
||||||
|
|
||||||
|
# Install some packages to use WAL
|
||||||
RUN apt-get update \
|
RUN apt-get update \
|
||||||
&& apt-get install -y python-dev libffi-dev libssl-dev lzop pv daemontools curl build-essential \
|
&& apt-get install -y \
|
||||||
|
build-essential \
|
||||||
|
curl \
|
||||||
|
daemontools \
|
||||||
|
libffi-dev \
|
||||||
|
libssl-dev \
|
||||||
|
lzop \
|
||||||
|
pv \
|
||||||
|
python-dev \
|
||||||
&& curl --silent --show-error --retry 5 https://bootstrap.pypa.io/get-pip.py | python \
|
&& curl --silent --show-error --retry 5 https://bootstrap.pypa.io/get-pip.py | python \
|
||||||
&& pip install 'wal-e<1.0.0' \
|
&& pip install 'wal-e<1.0.0' \
|
||||||
&& apt-get remove -y build-essential python-dev \
|
&& apt-get remove -y \
|
||||||
|
build-essential \
|
||||||
|
python-dev \
|
||||||
&& apt-get autoremove -y \
|
&& apt-get autoremove -y \
|
||||||
&& apt-get clean \
|
&& apt-get clean \
|
||||||
&& rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/*
|
&& rm -rf /var/lib/apt/lists/* /var/cache/apt/archives/*.deb /var/cache/apt/archives/partial/*.deb /var/cache/apt/*.bin /tmp/* /var/tmp/*
|
||||||
|
|
||||||
|
# Add wale script
|
||||||
COPY setup-wale.sh /docker-entrypoint-initdb.d/
|
COPY setup-wale.sh /docker-entrypoint-initdb.d/
|
||||||
COPY docker-entrypoint1.sh /
|
|
||||||
RUN chmod +x /docker-entrypoint1.sh
|
|
||||||
|
|
||||||
ENTRYPOINT ["/docker-entrypoint1.sh"]
|
|
||||||
|
|
||||||
|
# Add and configure entrypoint and command
|
||||||
|
COPY entrypoint.sh /
|
||||||
|
ENTRYPOINT ["/entrypoint.sh"]
|
||||||
CMD ["postgres"]
|
CMD ["postgres"]
|
||||||
|
@ -30,6 +30,7 @@ if [ "$1" = 'postgres' ]; then
|
|||||||
if [ "${!v}" = "" ]; then
|
if [ "${!v}" = "" ]; then
|
||||||
echo "$v is required for Wal-E but not set. Skipping Wal-E setup."
|
echo "$v is required for Wal-E but not set. Skipping Wal-E setup."
|
||||||
update_conf
|
update_conf
|
||||||
|
# Run the postgresql entrypoint
|
||||||
. /docker-entrypoint.sh
|
. /docker-entrypoint.sh
|
||||||
exit
|
exit
|
||||||
fi
|
fi
|
||||||
@ -47,5 +48,6 @@ if [ "$1" = 'postgres' ]; then
|
|||||||
ARCHIVE_MODE=on
|
ARCHIVE_MODE=on
|
||||||
|
|
||||||
update_conf
|
update_conf
|
||||||
|
# Run the postgresql entrypoint
|
||||||
. /docker-entrypoint.sh
|
. /docker-entrypoint.sh
|
||||||
fi
|
fi
|
@ -5,7 +5,3 @@ echo "wal_level = $WAL_LEVEL" >> $PGDATA/postgresql.conf
|
|||||||
echo "archive_mode = $ARCHIVE_MODE" >> $PGDATA/postgresql.conf
|
echo "archive_mode = $ARCHIVE_MODE" >> $PGDATA/postgresql.conf
|
||||||
echo "archive_command = 'envdir /etc/wal-e.d/env /usr/local/bin/wal-e wal-push %p'" >> $PGDATA/postgresql.conf
|
echo "archive_command = 'envdir /etc/wal-e.d/env /usr/local/bin/wal-e wal-push %p'" >> $PGDATA/postgresql.conf
|
||||||
echo "archive_timeout = $ARCHIVE_TIMEOUT" >> $PGDATA/postgresql.conf
|
echo "archive_timeout = $ARCHIVE_TIMEOUT" >> $PGDATA/postgresql.conf
|
||||||
|
|
||||||
# no cron in the image, use systemd timer on host instead
|
|
||||||
#su - postgres -c "crontab -l | { cat; echo \"0 3 * * * /usr/bin/envdir /etc/wal-e.d/env /usr/local/bin/wal-e backup-push /var/lib/postgresql/data\"; } | crontab -"
|
|
||||||
#su - postgres -c "crontab -l | { cat; echo \"0 4 * * * /usr/bin/envdir /etc/wal-e.d/env /usr/local/bin/wal-e delete --confirm retain 7\"; } | crontab -"
|
|
||||||
|
@ -1,9 +1,10 @@
|
|||||||
FROM nginx:mainline
|
FROM nginx:mainline
|
||||||
|
|
||||||
|
# Remove default configuration and add our custom Nginx configuration files
|
||||||
RUN rm /etc/nginx/conf.d/default.conf
|
RUN rm /etc/nginx/conf.d/default.conf
|
||||||
COPY ./mattermost /etc/nginx/sites-available/
|
COPY ./mattermost /etc/nginx/sites-available/
|
||||||
COPY ./mattermost-ssl /etc/nginx/sites-available/
|
COPY ./mattermost-ssl /etc/nginx/sites-available/
|
||||||
|
|
||||||
COPY docker-entry.sh /
|
# Add and setup entrypoint
|
||||||
RUN chmod +x /docker-entry.sh
|
COPY entrypoint.sh /
|
||||||
ENTRYPOINT /docker-entry.sh
|
ENTRYPOINT ["/entrypoint.sh"]
|
||||||
|
Reference in New Issue
Block a user