Docker部署golang应用时时区问题

目前golang用的基础镜像是busybox,由于golang交叉编译之后只有一个二进制文件,可以直接部署到容器中运行,容器镜像大小几乎等于二进制文件大小。

带来的问题

由于基础镜像太过精简,目前遇到的问题是将时间戳格式化为时间字符串时发现差了8个小时。

尝试过的解决办法

刚开始使用了Location时区相关API,但是部署到容器中发现直接报错了,因为容器中缺少相关的系统调用函数。代码如下:

使用docker-composer部署nodejs应用

新建Dockerfile

在应用目录下新建Dockerfile

1
2
3
4
5
6
FROM node:8
WORKDIR /usr/src/app
ADD . /usr/src/app
RUN npm install --registry=https://registry.npm.taobao.org
USER node
EXPOSE 8080

8080 端口请根据实际情况调整。建议大于1024,否则使用node用户启动应用时可能权限不足

新建docker-compose.yml

在应用目录下新建docker-compose.yml

1
2
3
4
5
6
7
8
9
10
11
version: "2"
services:
jsconsole:
build: .
volumes:
- .:/usr/src/app
- /usr/src/app/node_modules
ports:
- "127.0.0.1:8081:8080"
command: "npm start"
restart: always

使用Docker来部署NodeJs应用

Docker的环境无关性以及自动化特性实在是令人称赞,最近遇到的一个问题是,NodeJs使用8.x版本开发,但是线上服务器是7.x的,这时候又不能动线上的应用。
于是想到了使用Docker来部署NodeJs,服务器是Ubuntu的。

安装Docker

1
apt install docker.io

Dockerfile编写

由于默认的dockhub速度非常慢导致下载镜像慢,而且镜像下来的Ubuntu apt源又是国外的,简直是慢上加慢,本文使用daocloud.io的Ubuntu镜像以及阿里云的Ubuntu源

Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×