I assume you use sitemap_generator gem.
Let’s change bin/docker-entrypoint
file so whenever you start this container as a Rails server it will generate the sitemap.
#!/bin/bash -e
# If running the rails server then create or migrate existing database
if [ "${1}" == "./bin/rails" ] && [ "${2}" == "server" ]; then
./bin/rails db:prepare
./bin/rails sitemap:refresh
fi
exec "${@}"
Make sure the public
directory, where the sitemap will be generated, is owned by the rails
user, so you won’t have any problems with permissions. Add public
to the line that is setting this in your Dockerfile
:
# Run and own only the runtime files as a non-root user for security
RUN useradd rails --create-home --shell /bin/bash && \
chown -R rails:rails db log storage tmp public