Edit default .htaccess in wordpress docker

Viewed 9892

I have a wordpress container which gets generated by a docker-compose file. Wordpress container contains .htaccess file by default. I want to edit that such that that the edit is performed only once when container is created.

3 Answers

This can be tricky if you're mounting a directory on the host to /var/www/html (for example when using -v /host/path:/var/www/html or similar) -- the volume mount will clobber (overwrite) anything in your image.

If your host does not have any mounts, simply adding COPY .htaccess /var/www/html/.htaccess (or modifying the existing one with RUN) should work.

To get around the volume mount clobbering the image's htaccess file, write an entrypoint script to overwrite the file instead. Because the entrypoint runs after the mount exists, it will be sure to take effect.

Create a custom entrypoint shell script that copies your htaccess file into /var/www/html then fires off the default entrypoint:

#!/usr/bin/env bash

# entrypoint.sh

cp /my-htaccess-file /var/www/html/.htaccess

# run the entrypoint from the ancestor image
docker-entrypoint.sh "$@"

Then in your Dockerfile to copy your own htaccess file to a known location, add the entrypoint script, and (re)set the image command:

FROM wordpress:5.8.2-php7.4
COPY entrypoint.sh /my-entrypoint.sh
# RUN chmod +x /my-entrypoint.sh # uncomment if your source file is not executable
COPY .htaccess /my-htaccess-file
ENTRYPOINT ["/my-entrypoint.sh"]
# whenever the entrypoint is set, the command must also be set again
# this is the default CMD from the ancestor image.
CMD ["apache2-foreground"]
Related