简体   繁体   中英

docker-compose=> sh: 1: ./entrypointsh: not found but entrypoint shows in LS

So I'm trying to set up a docker-compose file, and do some data initialisation in it. However when I do docker-compose up in my terminal (windows one + tried a bash one) I get sh: 1: ./entrypoint: not found despite it showing the file when I add ls to my command.

mssql_1      | data
mssql_1      | entrypoint.sh
mssql_1      | init.sql
mssql_1      | table

My docker-compose file:

version: '2.1'
services:
  mssqldata:
    image: microsoft/mssql-server-linux:latest
    entrypoint: /bin/bash
  mssql:
    image: microsoft/mssql-server-linux:latest
    ports:
      - 1433:1433
    volumes:
      - /var/opt/mssql
      - ./sql:/usr/src/app 
    working_dir: /usr/src/app 
    command: sh -c 'chmod +x ./entrypoint.sh; ./entrypoint.sh & /opt/mssql/bin/sqlservr;'
    environment:
      ACCEPT_EULA: Y
      SA_PASSWORD: P@55w0rd
    volumes_from:
      - mssqldata

Folder structure:

docker-compose.yml
sql/
  data/
  table/
  entrypoint.sh
  init.sql

In my opinion this should be happening in your dockerfile instead of in your docker-compose.yml file. Generally the idea behind docker-compose is to get a multi container application running and to get the containers in a multi container application to talk to each other. So for example in your context it would perhaps be to get three containers to communicate with other for a asp.net+ MSSQL + IIS container.

In any case what you are trying to achieve you can do in your dockerfile I'll try write this dockerfile for you as far as possible. Here is the dockerfile:

FROM microsoft/mssql-server-linux:latest

RUN mkdir -p /usr/src/app
WORKDIR /usr/src/app

EXPOSE 1433


ADD  entrypoint.sh /entrypoint.sh

COPY entrypoint.sh /entrypoint.sh

# I suggest you add starting : "/opt/mssql/bin/sqlservr" to the entrypoint.sh script it would simplify things a bit.

ENTRYPOINT ["/bin/bash", "/entrypoint.sh"]

Here is the docker-compose.yml file that you need:

version: '2'
services:
  ms-sql-server-container:
    image: mssql-container:latest
    # This refers to the docker container created by building our dockerfile with:
    # docker build -t mssql-container  .
    environment:
      - ACCEPT_EULA=Y
      - SA_PASSWORD=P@55w0rd
    volumes:
      - ./sql:/usr/src/app 
    # I don't really understand the reason for the second volume that you had if you can kindly explain, then I can edit my answer to accomodate the second volume
    # if I think that you need it.
    ports:
      - 1433:1433

Let me know if this works.

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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM