Skip to content

Commit

Permalink
feat: unified docker image
Browse files Browse the repository at this point in the history
  • Loading branch information
Geoffroy Empain committed Dec 8, 2020
1 parent 6120e47 commit 7e19fe5
Show file tree
Hide file tree
Showing 9 changed files with 80 additions and 13 deletions.
2 changes: 1 addition & 1 deletion .dockerignore
Original file line number Diff line number Diff line change
Expand Up @@ -3,4 +3,4 @@
!migrate-mongo-config.js
!migrations
!build
**/*.js.map
!docker/files
10 changes: 9 additions & 1 deletion .github/workflows/main.yml
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,8 @@ env:
GITHUB_REPOSITORY_SSH_URL: "git@github.com:${{ github.repository }}.git"
TMP_DOCKER_IMAGE: "getmeli/api/${{ github.ref }}"
DOCKER_IMAGE: "getmeli/api"
TMP_DOCKER_IMAGE_UNIFIED: "getmeli/meli/${{ github.ref }}"
DOCKER_IMAGE_UNIFIED: "getmeli/meli"
IS_RELEASE_BRANCH: "${{ github.ref == 'refs/heads/latest' || github.ref == 'refs/heads/next' || github.ref == 'refs/heads/beta' }}"
jobs:
build:
Expand Down Expand Up @@ -35,7 +37,11 @@ jobs:
npm version --no-git-tag-version $(cat VERSION) --allow-same-version
fi
npm run build
docker build -t $TMP_DOCKER_IMAGE .
- name: "docker build"
run: |
docker build -t $TMP_DOCKER_IMAGE -f ./docker/Dockerfile .
# TODO UI_VERSION=get channel from semantic-release
docker build -t $TMP_DOCKER_IMAGE_UNIFIED -f ./docker/unified.Dockerfile --build-arg=UI_VERSION=TODO .
- name: "release"
if: ${{ env.IS_RELEASE_BRANCH == 'true' }}
run: |
Expand All @@ -48,7 +54,9 @@ jobs:
if: ${{ env.IS_RELEASE_BRANCH == 'true' }}
run: |
docker login -u $DOCKER_USER -p $DOCKER_TOKEN
HEAD_BRANCH=`echo "${GITHUB_REF//refs\/heads\//}" | tr -d '\n'`
npx docker-semver-tags --sourceImage $TMP_DOCKER_IMAGE --targetImage $DOCKER_IMAGE --versionTag $(cat VERSION)
npx docker-semver-tags --sourceImage $TMP_DOCKER_IMAGE_UNIFIED --targetImage $DOCKER_IMAGE_UNIFIED --versionTag $(cat VERSION) --build-arg="$HEAD_BRANCH"
env:
DOCKER_TOKEN: ${{ secrets.DOCKER_TOKEN }}
DOCKER_USER: ${{ secrets.DOCKER_USER }}
Expand Down
15 changes: 12 additions & 3 deletions .releaserc.js
Original file line number Diff line number Diff line change
@@ -1,9 +1,18 @@
module.exports = {
branches: [
{ name: 'latest' },
{ name: 'beta', prerelease: true },
{ name: 'next', prerelease: true },
{ name: 'tmp', prerelease: true },
{
name: 'beta',
prerelease: true,
},
{
name: 'next',
prerelease: true,
},
{
name: 'tmp',
prerelease: true,
},
],
plugins: [
'@semantic-release/commit-analyzer',
Expand Down
2 changes: 1 addition & 1 deletion Dockerfile → docker/Dockerfile
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
FROM node:12-alpine

COPY ./build/ /app/
COPY ./build /app/
COPY ./node_modules /app/node_modules
COPY ./migrate-mongo-config.js /app/

Expand Down
6 changes: 6 additions & 0 deletions docker/files/caddy-config.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
{
"admin": {
"disabled": false,
"listen": "0.0.0.0:2019"
}
}
6 changes: 6 additions & 0 deletions docker/files/entrypoint.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
#!/usr/bin/env sh
set -e

caddy start --config /etc/caddy/config.json

exec "$@"
3 changes: 3 additions & 0 deletions docker/files/env.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
{
"MELI_API_URL": "http://localhost:3001"
}
35 changes: 35 additions & 0 deletions docker/unified.Dockerfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
ARG UI_VERSION=latest

# https://docs.docker.com/engine/reference/builder/#understand-how-arg-and-from-interact
FROM getmeli/ui:${UI_VERSION} AS ui

FROM caddy:2

# caddy
COPY ./docker/files/entrypoint.sh /entrypoint.sh
COPY ./docker/files/caddy-config.json /etc/caddy/config.json
# ui
COPY --from=ui /www /app/ui
# api
COPY ./build /app/api
COPY ./node_modules /app/api/node_modules
COPY ./migrate-mongo-config.js /app/api

RUN chmod +x /entrypoint.sh \
&& apk add --no-cache \
bash \
nodejs \
&& mkdir -p /app/api/migrations

WORKDIR /app

LABEL maintainer="meli.sh"

ENV MELI_URL_INTERNAL=http://localhost:3001
ENV MELI_UI_DIR=/app/ui

EXPOSE 80
EXPOSE 443

ENTRYPOINT ["/entrypoint.sh"]
CMD ["node", "api/index.js"]
14 changes: 7 additions & 7 deletions src/env.ts
Original file line number Diff line number Diff line change
Expand Up @@ -87,22 +87,22 @@ const envSpec: EnvSpec<Env> = {
schema: string().required(),
},
MELI_URL_INTERNAL: {
schema: string().optional().custom(isUrl).default(process.env.MELI_URL),
schema: string().optional().custom(isUrl).default(process.env.MELI_URL || null),
},
MELI_UI_URL: {
schema: string().optional().custom(isUrl).default(process.env.MELI_URL),
schema: string().optional().custom(isUrl).default(process.env.MELI_URL || null),
},
MELI_UI_URL_INTERNAL: {
schema: string().optional().custom(isUrl).default(process.env.MELI_URL),
schema: string().optional().custom(isUrl).default(process.env.MELI_URL || null),
},
MELI_SITES_URL: {
schema: string().optional().custom(isUrl).default(process.env.MELI_URL),
schema: string().optional().custom(isUrl).default(process.env.MELI_URL || null),
},
MELI_UI_DIR: {
schema: string().optional(),
},
MELI_JWT_SECRET: {
schema: string(),
schema: string().required(),
},
MELI_JWT_TOKEN_EXPIRATION: {
transform: stringToInt(),
Expand Down Expand Up @@ -142,7 +142,7 @@ const envSpec: EnvSpec<Env> = {
schema: string().optional(),
},
MELI_MONGO_URI: {
schema: string(),
schema: string().required(),
},
MELI_MIGRATE_ROLLBACK: {
transform: stringToBoolean(),
Expand Down Expand Up @@ -274,7 +274,7 @@ const envSpec: EnvSpec<Env> = {
schema: string().optional().default('/sites'),
},
MELI_SITES_DIR: {
schema: string().required().default('/sites'),
schema: string().optional().default('/sites'),
},
MELI_CADDY_ADMIN_API_URL: {
schema: string().default('http://localhost:2019'),
Expand Down

0 comments on commit 7e19fe5

Please sign in to comment.