Add Dockerfile
This commit is contained in:
parent
0c018a898a
commit
eaf25ef23a
4 changed files with 68 additions and 0 deletions
3
.dockerignore
Normal file
3
.dockerignore
Normal file
|
@ -0,0 +1,3 @@
|
|||
.git
|
||||
Dockerfile
|
||||
config/watch.yml
|
41
Dockerfile
Normal file
41
Dockerfile
Normal file
|
@ -0,0 +1,41 @@
|
|||
FROM node:alpine as node_build
|
||||
WORKDIR /tmp_build
|
||||
|
||||
COPY package.json .
|
||||
COPY yarn.lock .
|
||||
RUN yarn install --no-progress --frozen-lockfile
|
||||
|
||||
COPY webpack.mix.js .
|
||||
COPY src ./src
|
||||
RUN yarn prod
|
||||
|
||||
FROM crystallang/crystal:1.0.0-alpine as lucky_build
|
||||
ENV SKIP_LUCKY_TASK_PRECOMPILATION="1"
|
||||
RUN apk add yaml-static
|
||||
WORKDIR /tmp_build
|
||||
COPY shard.* ./
|
||||
RUN shards install --production
|
||||
COPY . .
|
||||
COPY --from=node_build /tmp_build/public/mix-manifest.json public/mix-manifest.json
|
||||
RUN crystal build --static src/start_server.cr
|
||||
RUN crystal build --static tasks.cr -o run_task
|
||||
|
||||
FROM alpine
|
||||
|
||||
ARG PUID=1000
|
||||
ARG PGID=1000
|
||||
|
||||
RUN addgroup -g ${PGID} -S lucky && \
|
||||
adduser -u ${PUID} -S lucky -G lucky
|
||||
WORKDIR /home/lucky/app
|
||||
|
||||
COPY --chown=lucky:lucky --from=node_build /tmp_build/public public
|
||||
COPY --chown=lucky:lucky --from=lucky_build /tmp_build/start_server start_server
|
||||
COPY --chown=lucky:lucky --from=lucky_build /tmp_build/run_task run_task
|
||||
COPY --chown=lucky:lucky ./script/docker_entrypoint ./
|
||||
|
||||
RUN mkdir ./config
|
||||
RUN chown -R lucky /home/lucky
|
||||
USER lucky
|
||||
|
||||
CMD ["/home/lucky/app/docker_entrypoint"]
|
20
README.md
20
README.md
|
@ -10,6 +10,26 @@ One thing to note is that this app doesn't currently use a database. Any instruc
|
|||
|
||||
Hopefully a more comprehensive guide will be written at some point, but for now feel free to reach out if you have any questions. My contact info can be found on [my website](https://edwardloveall.com).
|
||||
|
||||
### Docker
|
||||
|
||||
A Dockerfile is included to build and run your own OCI images. To build:
|
||||
|
||||
```
|
||||
$ docker build [--build-arg PUID=1000] [--build-arg PGID=1000] -t scribe:latest -f ./Dockerfile .
|
||||
```
|
||||
|
||||
To run (generating a base config from environment variables):
|
||||
|
||||
```
|
||||
$ docker run -it --rm -p 8080:8080 -e SCRIBE_PORT=8080 -e SCRIBE_HOST=0.0.0.0 -e SCRIBE_DB=postgres://does@not/matter scribe:latest
|
||||
```
|
||||
|
||||
To run with mounted config from local fs:
|
||||
|
||||
```
|
||||
$ docker run -it --rm -v `pwd`/config/watch.yml:/app/config/watch.yml -p 8080:8080 scribe:latest
|
||||
```
|
||||
|
||||
## Contributing
|
||||
|
||||
1. Install required dependencies (see sub-sections below)
|
||||
|
|
4
script/docker_entrypoint
Executable file
4
script/docker_entrypoint
Executable file
|
@ -0,0 +1,4 @@
|
|||
#!/bin/sh
|
||||
|
||||
echo -e "port: ${SCRIBE_PORT}\nhost: ${SCRIBE_HOST}\ndatabase: ${SCRIBE_DB}" > ./config/watch.yml
|
||||
./start_server
|
Loading…
Reference in a new issue