Reputation: 11
I pull the mysql/mysql-server image, then I execute the following commands below:
docker run --name myapp -e MYSQL_ROOT_PASSWORD=my-secret-pw -d mysql/mysql-server
docker exec -it myapp bash
After this, I install jdk and tomcat in the newly created myapp
container, then I exit the shell and run:
docker commit myapp myappwithjdk
Then I run the following, but the container exits immediately:
docker run -e MYSQL_ROOT_PASSWORD=my-secret-pw -d myappwithjdk
I don't know why it does this.
Upvotes: 1
Views: 2447
Reputation: 10362
The mysql image have the way to execute init scripts (both bash and sql) once on container creation. Simply put them to /docker-entrypoint-initdb.d/
folder:
FROM mysql:latest
ENV MYSQL_ROOT_PASSWORD=root
COPY 00-extra_env_setup.sh /docker-entrypoint-initdb.d/00-extra_env_setup.sh
COPY 01-user_setup.sql /docker-entrypoint-initdb.d/01-user_setup.sql
build:
docker build -t mymysql .
and run(note port exposing):
docker run -p 3306:3306 mymysql
now you able connect to it outside(change the ip to the ip of your docker server):
mysql --host 127.0.0.1 --port 3306 --user root --password
That's it!
Upvotes: 1
Reputation: 22680
It could be leftovers from running mysql (like pid file). It is bad approach to use exec & commit for creating own container based on different one. Much better to create own image via Dockerfile:
FROM mysql/mysql-server
RUN <your commands here>
and then
docker build -t myappwithjdk .
Upvotes: 3