I try to setup a Docker with both entrypoint and cmd.
FROM debian:stretch
RUN apt-get update && \
apt install gnupg ca-certificates -y
RUN echo "deb http://repo.aptly.info/ squeeze main" > /etc/apt/sources.list.d/aptly.list
RUN apt-key adv --keyserver keys.gnupg.net --recv-keys 9E3E53F19C7DE460
RUN apt update && apt install aptly -y
ADD aptly.conf /etc/aptly.conf
ADD start.sh .
VOLUME ["/aptly"]
ENTRYPOINT ["/start.sh"]
CMD ["aptly", "api", "serve"]
But entrypoint script is not stopping... The cmd command is not launching
Here my script :
#!/bin/bash
set -e
init_aptly() {
#import pgp key
#create nginx root folder in /aptly
su -c "mkdir -p /aptly/.aptly/public"
echo "12"
#initialize repository
#aptly create repo doze-server - distribution="stable"
}
#check for first run
if [ ! -e /aptly/.aptly/public ]; then
init_aptly
echo "13"
fi
echo "14"
The script always echo 14, I would like only one and then, execute the cmd command from dockerfile
When you use both entrypoint and command, the command section will be appended to entrypoint executable as arguments. Thus in your case:
ENTRYPOINT ["/start.sh"]
CMD ["aptly", "api", "serve"]
Is equivalent to running:
ENTRYPOINT["/start.sh", "aptly", "api", "serve"]
Can't tell much without knowing what the entrypoint does, but essentially this is what you are doing with this combination of entrypoint and cmd:
/start.sh aptly api serve
If you are after simply starting your server you can simply do something like this (valid path to the aptly
executable may be neccessary):
ENTRYPOINT ["aptly"]
CMD ["api", "serve"]
Unless you are doing much more than just running an executable there's no need for an entrypoint.
One important note, since nobody else has mentioned it: in order to use ENTRYPOINT
and CMD
together, you need to specify both in the array format. Doing something like this WILL NOT WORK :
ENTRYPOINT ./my_script.sh
CMD echo "hello world"
In the code above, ./my_script.sh
will be called, but CMD
will not be passed in.
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.