0

I am trying to create a hybrid container. Following is my docker-compose file.

version: "2"

services:

  database:
build:
  context: ./registration-database
image: registration-database
# set default mysql root password, change as needed
environment:
  MYSQL_ROOT_PASSWORD: password
# Expose port 3306 to host.
ports:
  - "3306:3306"
restart: always

  webserver:
build: 
  context: ./registration-webserver
image: registration-webserver
# mount point for application in tomcat
volumes:
  - ./app/target/UserSignup:/usr/local/tomcat/webapps/UserSignup
links:
  - database:registration-database
# open ports for tomcat and remote debugging
ports:
  - "8080:8080" 
  - "8000:8000"
restart: always

Following is the dockerFile for mysql:

 FROM mysql:5.7

 # Copy the database initialize script: 
 # Contents of /docker-entrypoint-initdb.d are run on mysqld startup
 ADD  docker-entrypoint-initdb.d/ /docker-entrypoint-initdb.d/

 ENV MYSQL_DATABASE=ishan
 ENV MYSQL_USER=ishan
 ENV MYSQL_PASSWORD=password

Following is the initialize_db.sql file

 USE `ishan`;

 CREATE TABLE `user` (
   `id` bigint(20) NOT NULL AUTO_INCREMENT,
   `dateOfBirth` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ,
   `emailAddress` varchar(255) NOT NULL,
   `firstName` varchar(255) NOT NULL,
   `lastName` varchar(255) NOT NULL,
   `password` varchar(8) NOT NULL,
   `userName` varchar(20) NOT NULL,
   PRIMARY KEY (`id`)
 ) ENGINE=InnoDB AUTO_INCREMENT=43 DEFAULT CHARSET=latin1;

Earlier when I was running the command docker-compose up it was creating the user ishan and it was creating the user table also. But now, suddenly something happened although the mysql is getting installed with the root user but the new user (ishan) and the table is not getting created. Any help is appreciated.

Following is the log which is getting printed on startup:

Starting app_database_1 ... done Starting app_webserver_1 ... done Attaching to app_database_1, app_webserver_1 database_1 | 2019-04-09T08:30:51.326732Z 0 [Warning] TIMESTAMP with implicit DEFAULT value is deprecated. Please use --explicit_defaults_for_timestamp server option (see documentation for more details). database_1 | 2019-04-09T08:30:51.327850Z 0 [Note] mysqld (mysqld 5.7.25) starting as process 1 ... database_1 | 2019-04-09T08:30:51.330081Z 0 [Note] InnoDB: PUNCH HOLE support available database_1 | 2019-04-09T08:30:51.330114Z 0 [Note] InnoDB: Mutexes and rw_locks use GCC atomic builtins database_1 | 2019-04-09T08:30:51.330118Z 0 [Note] InnoDB: Uses event mutexes database_1 | 2019-04-09T08:30:51.330121Z 0 [Note] InnoDB: GCC builtin __atomic_thread_fence() is used for memory barrier database_1 | 2019-04-09T08:30:51.330125Z 0 [Note] InnoDB: Compressed tables use zlib 1.2.11 database_1 | 2019-04-09T08:30:51.330127Z 0 [Note] InnoDB: Using Linux native AIO database_1 | 2019-04-09T08:30:51.330295Z 0 [Note] InnoDB: Number of pools: 1 database_1 | 2019-04-09T08:30:51.330382Z 0 [Note] InnoDB: Using CPU crc32 instructions database_1 | 2019-04-09T08:30:51.331394Z 0 [Note] InnoDB: Initializing buffer pool, total size = 128M, instances = 1, chunk size = 128M database_1 | 2019-04-09T08:30:51.336481Z 0 [Note] InnoDB: Completed initialization of buffer pool database_1 | 2019-04-09T08:30:51.338022Z 0 [Note] InnoDB: If the mysqld execution user is authorized, page cleaner thread priority can be changed. See the man page of setpriority(). database_1 | 2019-04-09T08:30:51.356556Z 0 [Note] InnoDB: Highest supported file format is Barracuda. database_1 | 2019-04-09T08:30:51.372677Z 0 [Note] InnoDB: Creating shared tablespace for temporary tables database_1 | 2019-04-09T08:30:51.372933Z 0 [Note] InnoDB: Setting file './ibtmp1' size to 12 MB. Physically writing the file full; Please wait ... database_1 | 2019-04-09T08:30:51.398496Z 0 [Note] InnoDB: File './ibtmp1' size is now 12 MB. database_1 | 2019-04-09T08:30:51.399884Z 0 [Note] InnoDB: 96 redo rollback segment(s) found. 96 redo rollback segment(s) are active. database_1 | 2019-04-09T08:30:51.399990Z 0 [Note] InnoDB: 32 non-redo rollback segment(s) are active. database_1 | 2019-04-09T08:30:51.400792Z 0 [Note] InnoDB: 5.7.25 started; log sequence number 12359503 database_1 | 2019-04-09T08:30:51.401039Z 0 [Note] InnoDB: Loading buffer pool(s) from /var/lib/mysql/ib_buffer_pool database_1 | 2019-04-09T08:30:51.401382Z 0 [Note] Plugin 'FEDERATED' is disabled. database_1 | 2019-04-09T08:30:51.419097Z 0 [Note] Found ca.pem, server-cert.pem and server-key.pem in data directory. Trying to enable SSL support using them. database_1 | 2019-04-09T08:30:51.421195Z 0 [Warning] CA certificate ca.pem is self signed. database_1 | 2019-04-09T08:30:51.423199Z 0 [Note] Server hostname (bind-address): '*'; port: 3306 database_1 | 2019-04-09T08:30:51.423332Z 0 [Note] IPv6 is available. database_1 | 2019-04-09T08:30:51.423468Z 0 [Note] - '::' resolves to '::'; database_1 | 2019-04-09T08:30:51.423622Z 0 [Note] Server socket created on IP: '::'. database_1 | 2019-04-09T08:30:51.430839Z 0 [Warning] Insecure configuration for --pid-file: Location '/var/run/mysqld' in the path is accessible to all OS users. Consider choosing a different directory. database_1 | 2019-04-09T08:30:51.434012Z 0 [Note] InnoDB: Buffer pool(s) load completed at 190409 8:30:51 database_1 | 2019-04-09T08:30:51.437767Z 0 [Warning] 'user' entry 'root@localhost' ignored in --skip-name-resolve mode. database_1 | 2019-04-09T08:30:51.437887Z 0 [Warning] 'user' entry 'mysql.session@localhost' ignored in --skip-name-resolve mode. database_1 | 2019-04-09T08:30:51.438037Z 0 [Warning] 'user' entry 'mysql.sys@localhost' ignored in --skip-name-resolve mode. database_1 | 2019-04-09T08:30:51.438612Z 0 [Warning] 'db' entry 'performance_schema mysql.session@localhost' ignored in --skip-name-resolve mode. database_1 | 2019-04-09T08:30:51.438712Z 0 [Warning] 'db' entry 'sys mysql.sys@localhost' ignored in --skip-name-resolve mode. database_1 | 2019-04-09T08:30:51.439004Z 0 [Warning] 'proxies_priv' entry '@ root@localhost' ignored in --skip-name-resolve mode. database_1 | 2019-04-09T08:30:51.451035Z 0 [Warning] 'tables_priv' entry 'user mysql.session@localhost' ignored in --skip-name-resolve mode. database_1 | 2019-04-09T08:30:51.451161Z 0 [Warning] 'tables_priv' entry 'sys_config mysql.sys@localhost' ignored in --skip-name-resolve mode. database_1 | 2019-04-09T08:30:51.484566Z 0 [Note] Event Scheduler: Loaded 0 events database_1 | 2019-04-09T08:30:51.485090Z 0 [Note] mysqld: ready for connections. database_1 | Version: '5.7.25' socket: '/var/run/mysqld/mysqld.sock' port: 3306 MySQL Community Server (GPL)

Ishan Tiwary
  • 938
  • 6
  • 15
  • 37
  • Possible duplicate of [MySQL scripts in docker-entrypoint-initdb are not executed](https://stackoverflow.com/questions/38504257/mysql-scripts-in-docker-entrypoint-initdb-are-not-executed) – char Apr 09 '19 at 10:30

1 Answers1

0

Most probably your volume is still present and for that reason MySQL ignores the entrypoint folder. You need to delete the volume between runs to get a fresh start. Be aware that this means losing data saved in mysql in the meantime.

docker-compose down
# this will clean all volumes not in use by any containers
docker volume prune

Run docker volume ls to make sure your volume is gone and then run your docker-compose again.

Mihai
  • 9,526
  • 2
  • 18
  • 40