Skip to content

Instantly share code, notes, and snippets.

@taxift
Last active February 12, 2018 12:44
Show Gist options
  • Save taxift/3a55b8432d33b1f37fa89c41b4191c97 to your computer and use it in GitHub Desktop.
Save taxift/3a55b8432d33b1f37fa89c41b4191c97 to your computer and use it in GitHub Desktop.
Dockerfile for WebRepo☆彡
FROM alpine:latest
RUN apk --no-cache add mysql-client
RUN echo '*/5 * * * * mysql -u ユーザー名 -pパスワード -S /ソケットのあるディレクトリ名 データベース名 -e "DELETE FROM テーブル名 WHERE send_time < CURRENT_TIMESTAMP - INTERVAL 12 HOUR;"' > /etc/crontabs/root
# 登録から12時間を経過している一時ユーザーは削除
CMD [ "crond", "-l", "2", "-f" ]
version: '3'
services:
echo:
build: echo
restart: always
volumes:
- /etc/localtime:/etc/localtime:ro
- usock:/usock
- Goのソース:/go/src/app
- ./volumes/web-vol:/web
links:
- mysql
nginx:
build: nginx
ports:
- "443:443"
- "80:80"
restart: always
volumes:
- /etc/localtime:/etc/localtime:ro
- usock:/usock
- ./volumes/web-vol:/web
- ./volumes/nginx-logs/nginx:/var/log/nginx
- ./volumes/nginx-logs/echo:/root/logs/
mysql:
build: mysql
restart: always
volumes:
- usock:/var/run/mysqld/
- データベース置き場:/var/lib/mysql
environment:
TZ: Asia/Tokyo
cron:
build: cron
restart: always
volumes:
- usock:/usock
- /etc/localtime:/etc/localtime:ro
environment:
TZ: Asia/Tokyo
volumes:
usock:
FROM golang:alpine
# FROM golang:latest
MAINTAINER hgcr
# golang:alpine
RUN apk --no-cache add git
RUN apk --no-cache add gcc
RUN apk --no-cache add musl-dev
# task runner(ファイル監視ツール)
# RUN go get -u gopkg.in/godo.v2/cmd/godo
# framework
RUN go get -u github.com/labstack/echo
RUN go get -u github.com/go-sql-driver/mysql
RUN go get -u github.com/gocraft/dbr
RUN go get -u github.com/yosssi/ace
RUN go get -u github.com/dgrijalva/jwt-go
# OAuth2
RUN go get -u github.com/satori/go.uuid
RUN go get -u golang.org/x/oauth2
RUN go get -u google.golang.org/api/oauth2/v2
# RUN go get -u google.golang.org/appengine
RUN go get -u cloud.google.com/go/compute/metadata
RUN go get -u github.com/dchest/uniuri
RUN go get -u gopkg.in/gomail.v2
RUN go get -u github.com/labstack/echo-contrib/session
RUN go get -u github.com/gorilla/sessions
# GetしたHTMLのスクレイピング
RUN go get -u github.com/PuerkitoBio/goquery
# 文字コード変換
RUN go get -u github.com/saintfish/chardet
RUN go get -u github.com/yuin/charsetutil
WORKDIR /go/src/app
# CMD ["/go/bin/godo", "server", "--watch"]
# EXPOSE 1323
# godo 不使用時のテスト
CMD ["go", "run", "server.go", "createPrevEvalPage.go"]
#ENTRYPOINT ["", ""]
#CMD ["go", "run", "/fcgi/server.go"]
FROM mysql:latest
ADD ./初期化用SQLファイル /docker-entrypoint-initdb.d
ENV MYSQL_DATABASE データベース名
ENV MYSQL_USER ユーザー名
ENV MYSQL_PASSWORD パスワード
ENV MYSQL_ROOT_PASSWORD ルートパスワード
RUN { \
echo '[mysqld]'; \
echo 'character-set-server=utf8mb4'; \
echo 'collation-server=utf8mb4_general_ci'; \
echo 'max_allowed_packet=100MB'; \
echo 'explicit_defaults_for_timestamp=1'; \
echo 'innodb_large_prefix=1'; \
echo 'innodb_file_per_table'; \
echo 'innodb_file_format=barracuda'; \
echo '[client]'; \
echo 'default-character-set=utf8mb4'; \
} > /etc/mysql/conf.d/charset.cnf
FROM nginx:alpine
MAINTAINER hgcr
#ADD ./www /root/www
#ADD ./app.conf /etc/nginx/conf.d/app.conf
ADD ./app.conf /etc/nginx/nginx.conf
ADD SSL証明書.crt /etc/nginx/server.crt
ADD SSL証明書.crt /etc/nginx/server.csr
ADD SSL証明書.key /etc/nginx/server.key
ADD ./usock.conf /etc/tmpfiles.d/usock.conf
RUN apk --no-cache add shadow
RUN mkdir /root/logs
RUN chmod 755 -R /root
RUN chmod 400 /etc/nginx/server.crt /etc/nginx/server.csr /etc/nginx/server.key
RUN chown root:root /etc/nginx/server.crt /etc/nginx/server.csr /etc/nginx/server.key
RUN usermod -u 1000 nginx \
&& groupmod -g 1000 nginx
#RUN chmod 660 /web/domain.sock
# 80番ポートは恐らく初めから開放してるので、設定不要
EXPOSE 443
CMD ["nginx", "-g", "daemon off;"]
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment