简体   繁体   中英

Can't Dockerize my simple typescript website

I am trying to get a Typescript project running in Docker. I created the Docker file based on a tutorial but when I run it I get:

/usr/local/bin/docker-entrypoint.sh: 8: exec: .: Permission denied

I am not sure how to diagnosis this problem.

I can enter the container with

docker run --rm -it d3ca97c88aec bash -il 

and run the server with

npm start

I have no file called docker-entrypoint.sh and I didn't make one.

I STRONGLY FEEL THIS IS BECAUSE TYPESCRIPT MAKES A BUILD FOLDER AND THAT BUILD FOLDER IS PERMISSIONED DIFFERENTLY.

Dockerfile

FROM node:12

# Create app directory
WORKDIR /usr/src/app

# Install app dependencies
# A wildcard is used to ensure both package.json AND package-lock.json are copied
# where available (npm@5+)
COPY package*.json ./

RUN npm install
# If you are building your code for production
# RUN npm ci --only=production

# Bundle app source
COPY . .
ENV COUCH_URL=NotSafeForStackOverflow

RUN npx tsc

EXPOSE 8080
CMD npx ts-node index.ts

{
  "name": "express-react-app",
  "version": "1.0.0",
  "main": "index.js",
  "repository": "",
  "author": "",
  "license": "",
  "private": null,
  "dependencies": {
    "agentkeepalive": "^4.1.3",
    "apollo-utilities": "^1.3.4",
    "base64-arraybuffer": "^0.2.0",
    "express": "^4.17.1",
    "express-graphql": "^0.11.0",
    "graphql": "^15.3.0",
    "graphql-depth-limit": "^1.1.0",
    "graphql-tag": "^2.11.0",
    "graphql-type-json": "^0.3.2",
    "i": "^0.3.6",
    "merge-graphql-schemas": "^1.7.8",
    "nano": "^8.2.2",
    "node-webcrypto-ossl": "^2.1.1",
    "npm": "^6.14.8",
    "text-encoding": "^0.7.0",
    "ts-node": "^9.0.0",
    "typescript": "^3.7.4",
    "uuid": "^8.3.0"
  },
  "scripts": {
    "start": "npx ts-node index.ts",
    "build": "npx tsc",
    "dev": "nodemon --watch '**/*.ts' --exec 'ts-node' index.ts"
  },
  "devDependencies": {
    "@types/express": "^4.17.7",
    "@types/graphql": "^14.5.0",
    "@types/node": "^14.6.3"
  }
}

when you run CMD npx ts-node index.ts it will overwrite default CMD [ "node" ]

please refer link below to how to use node image :

https://github.com/nodejs/docker-node/blob/master/README.md#how-to-use-this-image

you shoud be able done by using docker-compose :

version: "2"
services:
  node:
    image: "node:8"
    user: "node"
    working_dir: /home/node/app
    environment:
      - NODE_ENV=production
    volumes:
      - ./:/home/node/app
    expose:
      - "8081"
    command: "npm start"

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