Reputation: 1085
I'm running docker-letsencrypt through a docker-compose.yml
file. It comes with PHP. I'm trying to run PHP composer with it. I can install composer while being in the container through bash
, but that won't stick when I recreate the container. How do I keep a permanent install of composer in an existing container that doesn't come with compose by default?
My docker-compose.yml
looks like this:
version: "3"
services:
letsencrypt:
image: linuxserver/letsencrypt
container_name: letsencrypt
cap_add:
- NET_ADMIN
ports:
- "80:80"
- "443:443"
environment:
- PUID=1000
- PGID=1000
- EMAIL=<mailadress>
- URL=<tld>
- SUBDOMAINS=<subdomains>
- VALIDATION=http
- TZ=Europe/Paris
volumes:
- /home/ubuntu/letsencrypt:/config
I did find the one-line installer for composer:
php -r "readfile('http://getcomposer.org/installer');" | php -- --install-dir=/usr/bin/ --filename=composer
I could add this to command
in my docker-compose.yml
, but that would reinstall composer even on container restarts right?
Upvotes: 2
Views: 1508
Reputation: 5062
You're right about your comment about the command
option, it will indeed be run every time you launch your container.
One workaround would be to create your own dockerfile, as follow :
FROM linuxserver/letsencrypt
RUN php -r "readfile('http://getcomposer.org/installer');" | php -- --install-dir=/usr/bin/ --filename=composer
(RUN directives are only run during the build step).
You should then modify your docker-compose.yml :
...
build: ./dir
#dir/ is the folder where your Dockerfile resides
#use the dockerfile directive if you use a non-default naming convention
#or if your Dockerfile isn't at the root of your project
container_name: letsencrypt
...
Upvotes: 3