Running PostgreSql inside Docker

I have the following config lines:

RUN     sudo apt-get -y install postgresql
USER    postgres
RUN    /etc/init.d/postgresql start &&\
    psql --command "CREATE USER test WITH SUPERUSER PASSWORD 'test';" &&\
    createdb -O test test

EXPOSE 5432
CMD     ["mono", "src/Rest.Api/bin/Debug/Rest.Api.exe"]

However, running the final command to spin up my API yields this:

  • Can we use docker-image with the hyperkit driver on a mac?
  • Build Docker Image From Go Code
  • Docker Compose when to use image over build
  • Compile Tensorflow from source with Docker to get CPU speed up
  • When to use Docker-Compose and when to use Docker-Swarm
  • golang docker private github repository
  • setting listen on
    Failed to establish a connection to 'localhost'.
      at Npgsql.NpgsqlClosedState.Open (Npgsql.NpgsqlConnector context, Int32 timeout) [0x00000] in <filename unknown>:0
      at Npgsql.NpgsqlConnector.Open () [0x00000] in <filename unknown>:0
      at Npgsql.NpgsqlConnectorPool.GetPooledConnector (Npgsql.NpgsqlConnection Connection) [0x00000] in <filename unknown>:0
    exit
    

    Which looks like PostgreSQl isn’t running – what do I need to do to get postgresql running?

  • docker like “links” on Kubernetes
  • do docker container IPs change on restart?
  • Rancher Container Utilization stats stuck on Connecting
  • Running SpringBootApplication PostConstruct and PreDestroy
  • Docker multi container networking on same host
  • Using confluent-kafka python client in alpine container
  • One Solution collect form web for “Running PostgreSql inside Docker”

    The line

    RUN    /etc/init.d/postgresql start
    

    only serves to start Postgres while your image is being built.

    To ensure it is running at execution, you will want to create a script as entrypoint (using either ENTRYPOINT or CMD depending on what you want, which starts Postgres and runs your application.

    The simplest form of this would be something like

    #!/bin/sh
    /etc/init.d/postgresql start
    exec mono src/Rest.Api/bin/Debug/Rest.Api.exe
    

    You could save this as entrypoint.sh and use CMD ["entrypoint.sh"] as the last line in your Dockerfile.

    However, at this point it might be worth looking into something more robust like Phusion’s baseimage.

    Docker will be the best open platform for developers and sysadmins to build, ship, and run distributed applications.